Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >前端如何提高用户体验:增强可点击区域的大小

前端如何提高用户体验:增强可点击区域的大小

作者头像
前端小智@大迁世界
发布于 2020-07-08 02:56:46
发布于 2020-07-08 02:56:46
5.3K00
代码可运行
举报
文章被收录于专栏:终身学习者终身学习者
运行总次数:0
代码可运行

作者:Ahmad Shadded 译者:前端小智 来源:css-tricks

你是否曾经试着点击或点击一个元素(例如:按钮、链接),并且注意到只有单击该元素的特定区域,它才会响应?

必生这种情况是因为可点击区域未应用于整个元素。 为了更加清楚,请参见下图,左图可点击区别(圈红部分)明显比右图的小很多,所以右图的实现用户体验会更好。

对于本文,会介绍一些事例,并通过事例演示如何增加可点击区别,提高用户体验。

WCAG准则

WCAG全称Web Content Accessibility Guidelines 网页内容无障碍浏览准则,简单的说就是为了方便残障人士(包括低视患者,盲人,聋人,学习障碍,行动不便,认知障碍....)访问Web内容而制定的相关标准,可以使网站更加人性化。

举个例子,在WCAG准则2.3.2中规定:网页不包含任何闪光超过3次/秒的内容。

用户应该能够使用台式机/笔记本电脑上的键盘以及移动设备或平板电脑上的触摸屏来操作输入。 不要在移动设备屏幕上将按钮设置得太小,以免按下正确的按钮。 触摸目标的最小尺寸最好至少为44 x 44像素。

费兹法则

费兹法则(Fitts law)是一个人机互动以及人体工程学中人类活动的模型;它预测了快速移动到目标区域所需的时间是目标区域的距离和目标区域大小的函数。

在下面的图中,我模拟了两个按钮的不同情况。在左侧,按钮更小,更远,用户需要更多的时间与它互动。在右侧,按钮大小更大,更接近于它的同级输入元素,这将使交互更容易、更快。

接着,我们再来看看一些更加真实例子。注意:记住WCAG准则费兹法则 的概念。

按钮

在需要时使用实际真实<button>(包含可点击区域)非常重要。 下面的示例来自我使用的在线银行系统:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div class="navig next" onclick="validateLogin()">Next</div>

这是上面按钮的HTML的GIF图像。我把鼠标悬停在按钮上,光标仍然是一个指针,这很好。不过,我也可以选择文本和悬停时,有一个文本光标!如果使用了正确的元素,就不会发生这种情况。

当使用HTML <button>元素时,会获得下面效果:

  • 可通过鼠标,键盘或触摸访问
  • 可以通过键盘选中
  • 有对应的 JavaScript 方法

有些元素,我们需要添加 padding,原因有二:

  • 让它更美观
  • 让它变大,这样更容易被注意到

链接

之前在做导航的时候,犯了一个错误,应该是给 a 标签添加 padding 而不是 li:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<nav>
  <ul>
    <li class="nav-item"><a href="#">Home</a></li>
    <li class="nav-item"><nav href="#">Products</nav></li>
    <li class="nav-item"><a href="#">Store</a></li>
    <li class="nav-item"><a href="#">Team</a></li>
  </ul>
</nav>

// css

.nav-item {
  padding: 12px 16px;
}

基于上面的HTML和CSS,可点击的区域将只是文本,如下图所示:

正确的方法是在a 标签本身上添加padding。 请注意,默认情况下,padding 需要块元素才有效,而 a 标签是行内元素,所以可以给 a 标签设置blockinline-elementflex

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.nav-item a {
  display: block;
  padding: 12px 16px;
}

添加了上面的样式后,可点击的效果如下:

面包屑导航

假设可点击区域如下所示:

这种体验不是很好,鼠标或手指指向屏幕上如此小的目标会比较难。 在下图中,它的可点击区域更大并且更易于交互。

事例源码:https://codepen.io/shadeed/pe...

复选框和单选按钮

当存在复选框或单选按钮元素时,我希望可以单击它或关联的标签来激活/禁用它。

从用户体验的角度来看,这是难以访问和糟糕的。在 HTML 中,可以使用for属性将标签与输入框绑定在一起。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<input type="checkbox" id="option1">
<label for="option1">Option 1</label>

或者可以将输入框放置在标签内:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<label for="option1">
    Option 1
    <input type="checkbox" id="option1">
</label>

然后,在<label>元素上添加padding,以使可点击区域变大。 这样,问题得以解决,整个复选框或单选按钮都是可单击的,如下图所

侧边栏

对于带有类别的页面,有时我会注意到列表链接没有扩展到其父页面的整个宽度。 也就是说,可点击区域仅在文本上,如下图所示:

解决方法:

  • 删除<li>元素的 padding,并将其移动到<a>元素
  • 通过添加display: block使a标签的宽度等于其父链接的宽度。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.nav-item a {
    /*Other styles*/
    padding: 12px 16px;
    display: block;
}

添加后,如下所示:

真实案例

在最近的Twitter更新中,导航设计在可点击区域大小方面存在问题。 最初,它仅与文本相关,如下面的屏幕截图所示,但他们在收到反馈后将其修复。

章节标题

在某些情况下,需要在章节标题的远端添加“查看更多”按钮或箭头。 在下面的示例中,我将箭头放置在假圆中,以便可以正确地使箭头居中。

通常情况下,箭头周围的间距可以使用paddingwidthheight

使用伪元素来增加可点击区域

仅通过改变元素的宽度和高度或使用padding,并不总是能够使可点击区域变大,这时候就需要伪元素救场了。

这个想法是,伪元素属于其父元素,因此当我们创建具有特定宽度和高度的伪元素时,它将充当其父元素的单击/触摸/悬停区域。

在下图中,我在菜单按钮中添加了:after伪元素:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.menu-2:after {
  content: "";
  position: absolute;
  left: 55px;
  top: 0;
  width: 50px;
  height: 50px;
  background: #e83474;
  /*Other styles*/
}

原文:https://css-tricks.com/enhanc...

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Web Accessibility基础:构建无障碍的前端应用
Web Accessibility(网络无障碍)是确保所有人都能平等访问和使用网站和应用程序的关键。这包括视觉、听觉、运动和认知能力有限的用户。以下是一些构建无障碍前端应用的基础原则和代码示例:
天涯学馆
2024/08/19
2130
【 前端相关 网页样式 】总结CSS3中“伪类”与“伪元素”
熟悉前端的人都会听过css的伪类与伪元素,然而大多数的人都会将这两者混淆。本文从解析伪类与伪元素的含义出发,区分这两者的区别,并且列出大部分伪类与伪元素的具体用法,即使你有用过伪类与伪元素,但里面总有一两个你没见过的吧。 1.伪类与伪元素 先说一说为什么css要引入伪元素和伪类,以下是css2.1 Selectors章节中对伪类与伪元素的描述: CSS introduces the concepts of pseudo-elements and pseudo-classes to permit format
QUXINGDONG.COM
2018/04/17
3.7K0
【 前端相关 网页样式 】总结CSS3中“伪类”与“伪元素”
10个CSS技巧,极大提升用户体验
一个成功的Web App必须有良好的用户体验。当我们谈及改善用户体验时,你会想到什么?
前端小智@大迁世界
2022/06/15
9120
10个CSS技巧,极大提升用户体验
【Html.js——功能实现】布局切换(蓝桥杯真题-18556)【合集】
Rossy Yan
2025/02/21
2170
【Html.js——功能实现】布局切换(蓝桥杯真题-18556)【合集】
CSS魔法堂:重拾Border之——不仅仅是圆角
前言  当CSS3推出border-radius属性时我们是那么欣喜若狂啊,一想到终于不用再添加额外元素来模拟圆角了,但发现border-radius还分水平半径和垂直半径,然后又发现border-top-left/right-radius的水平半径之和大于元素宽度时,实际值会按比例分配元素宽度时,不禁会问"我真的懂border吗?"。本系列将稍微深入探讨一下那个貌似没什么好玩的border! 《CSS魔法堂:重拾Border之——解构Border》 《CSS魔法堂:重拾Border之——图片作边框》
^_^肥仔John
2018/01/18
1.4K0
CSS魔法堂:重拾Border之——不仅仅是圆角
HTML+CSS 学成在线首页案例实操详解(超良心版!)
终于做完了网页(很简略!!!),但是也花了我不少时间,这篇文章决定详细的讲解,顺便也当做是复习巩固了,因为自己做的时候真的踩了很多坑...
y191024
2022/09/20
3.4K0
HTML+CSS 学成在线首页案例实操详解(超良心版!)
全栈之前端 | 11.CSS3基础知识之列表链接学习
描述: 上一章节,一起学习了表单与表格的样式设计,此章节我们将继续学习列表与链接的常规CSS样式设计,让我们一起熟悉其HTML源码及其相关样式属性与最佳实践吧!
全栈工程师修炼指南
2024/01/15
3110
全栈之前端 | 11.CSS3基础知识之列表链接学习
:before,:after伪元素妙用
本文作者:IMWeb 黎清龙 原文出处:IMWeb社区 未经同意,禁止转载 这两个伪元素分别表示元素内容的【前】【后】,利用这两个伪元素可以在元素内容的前后添加内容,其实这没有什么前后的概念
IMWeb前端团队
2018/01/08
1.8K0
:before,:after伪元素妙用
bootstrap5基本使用
container是最基本的布局。 给一个元素的class赋值为container之后,如果显示屏幕小于576,元素将要横向占满屏幕,但是大于576小于576像素的时候,宽度恒定为540,。就是说你的屏幕很宽的时候,元素永远不会横向占满整个屏幕,与边距有孔隙。但是赋值为.container-fluid的时候,元素永远横向占满屏幕,不会留有孔隙。
Crayon鑫
2023/10/10
7880
bootstrap5基本使用
C1 能力认证——Web基础
C1 能力认证——Web基础 语义化标签 元素 说明 article 定义独立的来自外部的文档,如新闻投稿、博客文章、论坛帖子等 aside 一般用于网页中的侧边栏或者文章内部的标注框 header 页面的头部区域,通常包括网站logo、链接导航、搜索框、banner nav 页面的导航链接区域 main 定义文档主要内容 section 定义文档的区域 footer 文档的页脚 mark 标记、突出显示文本 ul 无序列表 form 创建HTML表单 button 定义按钮 i 用于表示区分普通文本的
HammerZe
2022/03/24
3.5K0
C1 能力认证——Web基础
动手练一练,做一个现代化、响应式的后台管理首页
大家好,今天我们将一起从零开始纯手工建一个后台管理首页。关于后台管理模板,每个公司的要求都不一样,有的能用就行也丑不丑无所谓,或者用个开源模板凑合下就行啦。如果接到这样后台管理需求,我也是从网上下载改改而已,从没想过自己动手建一个。因为从零开始建一个漂亮完善的后台管理模板实在太费功夫了,交互样式的代码量不亚于业务代码的工作量。
前端达人
2020/02/29
1.1K0
动手练一练,做一个现代化、响应式的后台管理首页
Web 用户体验设计提升实践
一个 Web 页面或是一个 App,想让别人用得爽,获得良好的用户体验,可能需要包括但不限于:
Shopee技术团队
2021/11/16
1.4K0
Web 用户体验设计提升实践
魔改笔记六:twikoo及导航栏美化
顶栏动效曾令我费尽心思,眼见鱼鱼和洪哥的导航栏动画如此流畅,随着页面的上下切换标题和菜单,我感到无比畅快。然而,我发现的教程中都未能实现如此平滑的过渡。因此,我使用所学知识,在他人基础上进行改进,最终达成了我心目中的效果。至于 Twikoo 的美化,一开始我觉得原版实在不够美观,于是决定自行修改。在修改过程中,我也参考了一些小伙伴的内容,你可以在下方的引用链接中查看。
柳神
2024/05/30
3180
魔改笔记六:twikoo及导航栏美化
前端开发面试题答案(二)
(2)盒模型:内容(content)、填充(padding)、边界(margin)、边框(border);
疯狂的技术宅
2019/03/28
1.5K0
Web前端三剑客学习笔记
一直没有系统的学习HTML,CSS,JS都是东学一点,西学一点,想着暑假得空,便系统的学习下吧,故于此记录之。
小简
2022/12/29
2.4K0
Web前端三剑客学习笔记
前端基础知识整理
超文本标记语言(英语:HyperText Markup Language,简称:HTML),是一种标识性的语言。它包括一系列标签.通过这些标签可以将网络上的文档格式统一,使分散的Internet资源连接为一个逻辑整体。
QAIU
2023/03/14
3.5K0
CSS 伪元素的一些罕见用例
伪元素已经使用了很长时间。然而,我觉得有些用例并不是所有开发人员都完全了解的。我写下这篇文章是为了阐明它们,以便它们能被更多地使用。
前端小智@大迁世界
2020/05/26
9230
CSS 伪元素的一些罕见用例
JavaScript学习笔记(一)
wdm,这个寒假越过越长… 寒假在家学习JavaScript的相关知识,写博客作为笔记 我是以清华大学出版社的《JavaScript从入门到项目实践》作为学习用书的
wsuo
2020/07/31
3.4K0
JavaScript学习笔记(一)
Css详细介绍
(就近原则): !important > id > class > tag (!important 比内联优先级高)
FGGIT
2024/10/15
2850
前端优秀实践不完全指南
一个 Web 页面,一个 APP,想让别人用的爽,也就是所谓的良好的用户体验,我觉得他可能包括但不限于:
桃翁
2021/03/18
9440
相关推荐
Web Accessibility基础:构建无障碍的前端应用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验