Web 无障碍设计(Accessibility in Web design,也叫网站可及性 )是要让所创建的网站对所有用户都可用/可访问,不管用户的生理/身体能力如何、不管用户是以何种方式访问网站。
让网页完全支持无障碍功能有一定成本,我们可以在让代码更规范,更语义化等方面去改变;比如给图片标签加上一个alt属性描述,这个举动只需要1秒钟的时间,带来的用户体验确是跨越性的,也许只有一个视力障碍的用户在访问我们的官网,我想他在访问我们页面-点击图片的时候,朗读出图片描述信息的时候,一定会很欣慰。
无障碍好处有哪些?(帮助残障人士,并使网站收益)
为什么不是所有网站都能无障碍访问?你可能也会问自己为什么存在 “无障碍” 的问题,为什么不是所有网站都能让所有用户无障碍访问?要进行无障碍设计有许多不同原因,其中包括残疾人用户的需求、不同的人访问和使用互联网的不同途径和方式。
帮助视障用户
视障用户包括色盲用户、完全失明用户(盲人)。如果图片不带有相关文字描述,则视障用户在理解图片方面会存在问题。如果图片没有文字描述,看不见图片的盲人用户就无法知道图片表达的是什么。色盲用户在识别设计元素(包括文字)方面也会存在问题,因为色盲用户所能识别的色彩不足以辨别所有的设计元素(包括背景色和页面颜色)。
所开发的网站,如果没有考虑到适应于屏幕发音阅读器(读屏软件, 如 JAWS)或 “非可视” 浏览器(或叫声音浏览器、读屏浏览器,如 MozBraille)。读屏浏览器是一个可以发音阅读出网站的浏览器,帮助有视觉障碍的用户访问网站。一个在可视浏览器(如 IE)上看起来良好的网站,在读屏浏览器下可能听起来非常糟糕。
帮助听障用户
听障用户在听觉上存在问题。用声音传达的信息无法被听障用户所理解,简单解决方法是提供另外途径的信息传达方式,而不仅仅是声音,例如用文字描述、用图片。
帮助残障用户(肢体伤残的用户)
如果你不是残障用户,你无法想象他们(残疾人)的网络体验。例如,你曾经试过不使用鼠标去访问网站吗?除非你很幸运的遇到一个无障碍访问良好的网站,否则你肯定觉得非常困难。残障用户经常无法使用鼠标,除非创建网站的导航和输入方式的需求中就考虑残障人士的需求,否则残障人士可能完全无法使用你的网站。
帮助认知和神经障碍用户
网站往往比较复杂,要想找到我们所想要的信息经常不太容易。如果网站设计的过于复杂、导航不一致、存在让人分心(抓狂)的重复性动画,情况会更加糟糕。这些设计元素会导致认知和神经有障碍的用户的使用问题,甚至会让这些用户完全无法使用网站。
残障人士之外(所有用户都能受益)
前面我们知道如果我们存在某方面残障,使用互联网是件困难的事情。然后,web 无障碍访问不仅仅帮助到残障人士,良好理解和遵循 Web 无障碍设计,可以让所有用户都受益、更好的服务用户。
- 使用移动手机、Web-TV 的用户
- 低带宽的用户
- 在吵杂环境下使用网站的用户
- 容易被 “屏幕眩光” 伤到眼睛的用户
- 开车时的用户
- 低文化水平的用户
- 第二语言访问的用户(国外用户)
- 不同学习方式和习惯的用户
- 处理好 Web 无障碍访问问题也可以改善:
页面传输和网站更便于维护
- 更优内容索引、内容搜索,提高搜索引擎的排名;
网站获得更好市场机会
让你的网站具有可及性还有其它原因。根据目前数据,在许多国家残疾人用户占到人口的 10%~20%,如果能吸收前面提到的残障人士成为你的网站的用户,可以提高你网站的市场占有率。
许多国家的老龄化人口都在增加,年龄的增大会带来更多的无障碍访问问题,包括视觉障碍、听觉障碍、记忆力下降等。如果你的网站能吸收老年人用户,也会大大提升你网站的市场占有率。
所以,无障碍访问是可以直接带来经济效益的。
无障碍 Web 标准
Web内容无障碍指南(WCAG)2.1概述-官方链接
摘要
WCAG 2.1提供了一系列的建议,目的是使Web内容对更广泛的用户群体更加易于访问。这包括视力、听力、运动能力、语言和认知能力受限的人士。遵循这些准则不仅可以提高网站的无障碍性,还能增强所有用户的体验。
背景
WCAG 2.1基于WCAG 2.0,并加入了新的成功标准以解决特定用户群体的需求。
这些准则是国际性的,旨在跨越不同的技术和平台。
适用范围
适用于台式机、笔记本、平板和移动设备上的Web内容。
主要原则
WCAG 2.1围绕四个核心原则构建,即:
可感知性:信息和用户界面组件必须以可感知的方式呈现。
- 替代文本:为非文本内容提供文本替代,以便转换为大字体、盲文、语音等。
- 时基媒体:为音频和视频内容提供替代,如字幕、音频描述和手语翻译。
- 适应性:创建内容时,确保不同呈现方式下信息和结构不丢失。
- 可辨别性:提高内容的可见性和听力清晰度,例如适当的颜色对比和文本间距。
可操作性:用户界面组件和导航必须可操作。
- 键盘可访问:确保所有功能都可以通过键盘操作。
- 充足的时间:为用户提供足够的时间来阅读和使用内容,避免突然的时限。
- 癫痫和身体反应:避免设计可能引发癫痫或身体不适的内容。
- 可导航性:提供帮助用户导航和定位的方法,如清晰的标题和链接目的。
可理解性:信息和用户界面操作必须是可理解的。
- 可读性:使文本内容易于阅读和理解,包括语言和方言的使用。
- 可预测性:让网页以可预见的方式呈现和操作,保持导航和标识的一致性。
- 辅助输入:帮助用户避免和纠正错误,提供错误建议和预防机制。
鲁棒性:内容必须健壮,以被各种用户代理正确解释。
- 兼容:使用标准编码技术,确保内容的兼容性和未来的可维护性。
- 一致性:确保网站整体符合无障碍标准,提供一致性声明。
如何确保网站在不同浏览器和设备上都能提供良好的无障碍体验?
- 遵循WCAG准则:根据Web内容无障碍指南(WCAG),确保你的网站满足至少AA级标准。
- 使用语义化的HTML:使用适当的HTML标签来传达其含义,例如使用
<header>
,<nav>
,<main>
,<section>
,<article>
,<footer>
等。 - 确保颜色对比度:确保文本和背景之间有足够的颜色对比,以满足视觉障碍用户的需求。
- 提供文本替代方案:为非文本内容(如图片、视频)提供替代文本(alt text)或字幕。
- 键盘可访问性:确保所有功能都可以通过键盘操作,避免使用仅限鼠标的交互。
- 避免自动播放媒体:不要让音频或视频内容自动播放,或者提供控制机制让用户可以暂停或停止。
- 提供足够的时间:为用户提供足够的时间来阅读和使用内容,避免突然的时限或自动提交表单。
- 确保导航可预测性:网站导航应保持一致,链接和按钮的行为应符合用户预期。
- 支持屏幕阅读器和其他辅助技术:使用适当的ARIA(Accessible Rich Internet Applications)属性来增强现有HTML的功能。
- 响应式设计:确保网站在不同大小的屏幕上都能正常显示和操作。
- 跨浏览器测试:在不同的浏览器(如Chrome、Firefox、Safari、Edge等)上测试网站的功能和布局。
- 跨设备测试:在各种设备上测试网站,包括桌面、平板和手机。
- 用户测试:邀请残障用户参与测试,收集他们的反馈并优化体验。
- 持续维护和更新:定期更新内容和代码,以适应新的Web标准和辅助技术。
- 提供反馈机制:允许用户报告无障碍问题,并确保有快速响应和修复的流程。
- 教育团队:确保开发团队了解无障碍最佳实践,并在设计和开发过程中考虑这些因素。
- 使用无障碍工具和插件:利用浏览器扩展和在线工具来检查和改善网站的无障碍性。
- 文档和指南:创建和维护无障碍开发和设计指南,确保所有团队成员遵循。
常用HTML标签的无障碍实践
根据WCAG 2.1快速参考指南,以下是一些常用HTML标签的无障碍写法、含义及示例:
<img>
- 图像
- 含义: 嵌入图片或图形内容。
- 无障碍写法: 使用
alt
属性提供图像的文本描述。
示例
<img src="photo.jpg" alt="一位女士站在山顶上,欣赏日落">
<a>
- 超链接
- 含义: 定义一个超链接,用于从一个页面链接到另一个页面。
- 无障碍写法: 确保链接文本(或通过
aria-label
属性)清晰表达链接目的。
示例
<a href="https://example.com" aria-label="访问示例网站的主页">主页</a>
<button>
- 按钮
- 含义: 定义一个可点击的按钮。
- 无障碍写法: 使用
aria-pressed
属性表示按钮的状态(如果适用)。
示例
<button aria-pressed="false">切换</button>
<input>
- 输入字段
- 含义: 用于收集用户输入的表单字段。
- 无障碍写法: 使用
aria-invalid
属性指示输入错误。
示例
<input type="text" aria-invalid="true" aria-describedby="error-message">
<span id="error-message">输入格式不正确。</span>
<textarea>
- 文本区域
- 含义: 定义一个多行的文本输入区域。
- 无障碍写法: 确保文本区域大小可调整,以适应内容。
示例
<textarea rows="4" cols="50" aria-describedby="text-help"></textarea>
<div id="text-help">请输入您的评论。</div>
<select>
- 下拉菜单
- 含义: 创建下拉选择菜单。
- 无障碍写法: 使用
aria-labelledby
属性引用下拉菜单的描述标签。
示例
<label id="country-label">选择国家:</label>
<select aria-labelledby="country-label">
<option value="china">中国</option>
<option value="usa">美国</option>
</select>
<table>
- 表格
- 含义: 创建表格来展示数据。
- 无障碍写法: 使用
caption
元素为表格提供标题,使用th
元素和scope
属性定义表头。
示例
<table>
<caption>员工信息表</caption>
<thead>
<tr>
<th scope="col">姓名</th>
<th scope="col">职位</th>
</tr>
</thead>
<tbody>
<tr>
<td>张三</td>
<td>工程师</td>
</tr>
</tbody>
</table>
<header>
- 页眉
- 含义: 表示文档或文档区段的页眉。
- 无障碍写法: 包含导航或概览文档结构的元素。
示例
<header>
<h1>网站标题</h1>
<nav>
<ul>
<li><a href="#home">首页</a></li>
</ul>
</nav>
</header>
<footer>
- 页脚
- 含义: 表示文档或文档区段的页脚。
- 无障碍写法: 包含版权信息、相关链接等。
示例
<footer>
<p>© 2024 版权所有</p>
</footer>
<main>
- 主要内容
- 含义: 表示文档的主要内容区域。
- 无障碍写法: 作为文档结构的主体,不应包含在其他
<main>
元素内。
示例
<main>
<article>
<h2>文章标题</h2>
<p>这里是文章内容。</p>
</article>
</main>
<article>
- 文章
- 含义: 表示独立的、自包含的网页内容。
- 无障碍写法: 用于博客文章、新闻故事或论坛帖子等。
示例
<article>
<header>
<h2>独立内容示例</h2>
</header>
<p>这里是独立内容的主体。</p>
</article>
注意事项
- 所有标签都应该使用语义化的方式,以提高内容的可访问性。
- ARIA属性可以增强无障碍性,但它们不能替代正确的HTML结构。
- 确保所有交互元素都可以通过键盘访问,并且状态变化能够通过屏幕阅读器通知给用户。
以上示例提供了一些基本的无障碍写法,但请记得,无障碍设计是一个广泛且深入的领域,需要根据具体情况进行更细致的设计和实现。