可访问性

人们以多种方式访问网络。有些人看着屏幕并移动鼠标。有些人看不到屏幕,而是通过听它读出来的内容。有些人从不触摸鼠标,而是用键盘、语音或按下的开关来浏览页面。可访问性是构建所有人都能使用的页面的实践,其中大部分归结为以 HTML 应有的方式编写 HTML。
为什么可访问性很重要
**可访问性**意味着确保每个人都可以使用你的页面,无论他们的环境如何以及他们如何浏览。某个人可能看不到屏幕,而是通过大声朗读页面的软件来听。某个人可能不使用鼠标,而是用键盘浏览页面。某个人可能需要更大的文字或更强的颜色才能舒适地阅读。
想象一栋建筑,台阶旁边有一个坡道。坡道帮助无法爬楼梯的人,但对任何能够的人都没有任何影响。可访问的 HTML 是同样的想法:它为更多人打开了页面,而不会让任何人受到伤害。
令人欣慰的是 HTML 一开始就是可访问的。通过为每条内容使用正确的元素,你可以免费获得大部分。
语义 HTML 作为基础
为可访问性能做的最有效的单一事情是使用与内容含义相匹配的元素,而不是通用的元素来对外观进行样式设置。
语义 HTML 意味着选择一个标签来表示内容 是什么,而不是它 看起来 像什么。标题使用 <h1> 到 <h6>。按钮使用 <button>。链接使用 <a>。列表使用 <ul> 或 <ol>。这些中的每一个都已经携带屏幕阅读器可以宣布的含义,因此听众知道"这是一个按钮"或"这是一个标题"而无需看到它。
这就像搬家时标记盒子。标有"厨房"的盒子有助于携带它的任何人,不仅是包装它的人。语义标签以同样的方式标记你的内容,所以浏览器和辅助技术知道每个部分是什么。
在实践中,这意味着当你想要一个按钮时使用 <button>,而不是一个你已经样式设置为看起来像一个的 <div>。<div> 可以看起来完全相同,但它没有说它是什么。语义 HTML 章节介绍了完整的集合。
<button> 用于按钮,<h1> 用于标题,<a> 用于链接。每一个都已经告诉屏幕阅读器它是什么,所以你免费获得这个。样式化的 <div> 可以看起来相同,仍然什么都没说。 文本替代、标签、焦点和键盘
某些内容不能自己说话。图像对屏幕阅读器不可见,直到你描述它。表单字段是一个猜测,直到它被标记。只响应鼠标的页面排除了所有不使用鼠标的人。这四个区域是一点点关心就能走很长路的地方。
少数可靠的习惯涵盖了大部分内容:
- 图像需要替代文本。
alt属性为任何看不到图片的人描述图片。如果图像仅用于装饰,空的alt=""告诉屏幕阅读器跳过它。
<img src="red-fox.jpg" alt="一只红色狐狸蜷缩在雪中睡觉">- 表单字段需要标签。
<label>告诉访问者和屏幕阅读器在字段中输入什么。
<label for="email">电子邮件地址</label>
<input id="email" type="email">- 按钮和链接需要清晰的文本。 "阅读更多"本身在上下文中阅读时不清楚;"阅读有关票价的更多信息"自己理解。
- 键盘顺序应与阅读顺序匹配。 有人按 Tab 键通过页面按照元素在你的 HTML 中出现的顺序移动,所以保持该顺序合理。
alt,给表单字段一个 <label>,写出自己有意义的按钮和链接文本,并保持制表符顺序与阅读顺序匹配。它们都不需要很长时间。装饰图像获得一个空的 alt="" 以便它们被跳过。 ARIA,以及为什么不首先求助于它
有一组 HTML 属性是专门为可访问性制作的,称为 ARIA。它在正确的地方很有用,它是平台中最被滥用的部分之一,因此值得理解它的作用和何时置之不理。
ARIA 代表可访问的富互联网应用程序。它是一组额外的属性,你可以添加到元素中,以告诉辅助技术更多关于它的信息。这个名字让它听起来像第一个要使用的工具,它通常是最后一个。
原因很简单:ARIA 可以描述的大部分内容,HTML 已经自行说出。<button> 已经被宣布为按钮。将 role="button" 添加到它不会改变任何内容。如果你发现自己为一个元素添加 ARIA 来解释它 是什么,那通常是一个信号,可以交换已经说出它的纯 HTML 元素。
想象一个粘贴到移动盒子上的便签。如果盒子已经印有"厨房",阅读"厨房"的粘贴便签只会增加混乱。为没有自己标签的盒子保存便签。ARIA 用于 HTML 没有元素的页面部分,这比听起来要少见。
<button> 已经说它是一个按钮。为 HTML 没有元素的页面的罕见部分保存 ARIA,并保持其他一切普通。 快速自我审计
你不需要专家软件来捕捉最常见的问题。使用机器上已有的工具进行一些检查可以找到大多数,它们只需要几分钟运行。
这是你可以在任何页面上运行的简短检查清单:
- 放弃鼠标并按 Tab。你可以以有意义的顺序到达每个链接和按钮吗?你可以用 Enter 激活它们吗?
- 每个图像都有
alt属性吗? - 每个表单字段都有
<label>吗? - 你的按钮和链接在自己阅读时仍然有意义吗?
- 文本是否清晰地抵抗背景阅读?
在你自己的页面上运行这些是快速的,并且捕捉人们最经常遇到的问题。如果 Tab 键卡在某个地方,或者图像没有 alt,你找到了值得修复的东西。
alt,每个字段是否有 <label>,文本是否清晰地针对背景阅读。几分钟就能捕捉人们最遇到的问题。 
