Web 可访问性 API 的综合指南,重点关注屏幕阅读器兼容性和键盘导航,为全球受众构建包容且用户友好的 Web 体验。
Web 可访问性 API:通过屏幕阅读器支持和键盘导航赋能用户
在当今的数字环境中,确保 web 可访问性不仅仅是最佳实践,而是一项基本要求。一个真正具有包容性的 web 为所有用户提供平等的访问和机会,无论他们的能力如何。Web 可访问性 API(应用程序编程接口)是关键工具,可促进 web 内容和辅助技术 (AT) 之间的通信,例如屏幕阅读器和替代输入设备。本文深入探讨了 Web 可访问性 API 的重要性,特别关注屏幕阅读器支持和键盘导航,这是为全球受众创建可访问 web 体验的两个关键方面。
了解 Web 可访问性 API
Web 可访问性 API 是一组接口,用于向辅助技术公开有关 web 内容的信息。它们允许 AT 了解 web 页面上元素的结构、语义和状态,从而使残疾用户能够有效地进行交互。如果没有这些 API,AT 将无法准确地解释和传达屏幕上显示的信息。
一些最重要的 Web 可访问性 API 包括:
- ARIA (Accessible Rich Internet Applications): 一套属性,可将语义信息添加到 HTML 元素,尤其适用于使用 JavaScript 构建的动态内容和小部件。ARIA 得到浏览器和辅助技术的广泛支持。
- MSAA (Microsoft Active Accessibility): 主要在 Windows 系统上使用的旧 API。虽然与旧应用程序仍然相关,但通常首选 ARIA 用于新开发。
- IAccessible2: 构建在 MSAA 之上的 API,提供有关可访问对象的更详细信息。
- UI Automation (UIA): Microsoft 的现代可访问性 API,与 MSAA 相比,提供更高的性能和功能。
- Accessibility Tree: DOM(文档对象模型)的表示形式,专为辅助技术量身定制,删除不相关的节点并通过可访问性 API 公开语义信息。
屏幕阅读器支持:使内容可听
屏幕阅读器是软件应用程序,可将文本和其他视觉信息转换为语音或盲文输出。它们对于盲人或视力障碍者至关重要,使他们能够访问和交互 web 内容。有效的屏幕阅读器支持在很大程度上取决于 Web 可访问性 API 的正确实施。
屏幕阅读器兼容性的关键考虑因素:
- 语义 HTML: 使用语义 HTML 元素(例如,<article>、<nav>、<aside>、<header>、<footer>、<main>、<h1> 到 <h6>、<p>、<ul>、<ol>、<li>)提供了一个清晰的结构,屏幕阅读器可以解释。当有更具体的语义元素可用时,避免使用通用元素,如 <div> 和 <span>。
- ARIA 属性: 使用 ARIA 属性来增强 HTML 元素的语义,尤其适用于动态内容、自定义小部件和具有非标准行为的元素。一些重要的 ARIA 属性包括:
aria-label: 为没有可见文本标签的元素提供文本替代方案。例如:<button aria-label="Close">X</button>aria-labelledby: 将元素与提供其标签的另一个元素相关联。当可见标签已经存在时,这很有用。aria-describedby: 将元素与提供描述或说明的另一个元素相关联。aria-live: 指示页面的某个区域正在动态更新,屏幕阅读器应宣布更改。值包括off(默认)、polite(在用户空闲时宣布)和assertive(立即宣布,可能会中断用户)。aria-role: 定义元素的语义角色,覆盖默认角色。例如:<div role="button">Click Me</div>aria-hidden: 从辅助技术中隐藏元素。谨慎使用,因为在视觉上和从辅助技术中隐藏内容可能会产生可访问性问题。aria-expanded: 指示可展开元素(例如,菜单或手风琴面板)当前是否已展开。aria-haspopup: 指示元素具有弹出菜单或对话框。- 图像的替代文本: 为所有图像提供描述性替代文本(
alt属性)。这允许屏幕阅读器向无法看到图像的用户传达图像的内容和目的。使用简洁而有意义的描述。对于纯粹的装饰性图像,使用空alt属性 (alt="")。 - 表单标签: 使用
<label>元素和for属性将表单输入与清晰且描述性的标签相关联。这确保屏幕阅读器宣布每个输入字段的目的。 - 标题和地标: 使用标题(<h1> 到 <h6>)以逻辑方式构建内容,允许屏幕阅读器用户按标题级别导航页面。使用地标角色(例如,
role="navigation"、role="main"、role="banner"、role="complementary"、role="contentinfo")定义页面的关键部分,使用户能够快速跳转到不同的区域。 - 表格: 仅将表格用于表格数据,并提供适当的表头 (
<th>) 和标题 (<caption>)。在<th>元素上使用scope属性来定义它们与数据单元格的关系(例如,scope="col"用于列标题,scope="row"用于行标题)。 - 动态内容更新: 当内容动态更新时(例如,通过 AJAX 或 JavaScript),使用 ARIA 实时区域(
aria-live属性)通知屏幕阅读器更改。仔细考虑适当的aria-live值(polite或assertive)以避免让用户不知所措。 - 错误处理: 为表单验证和其他用户交互提供清晰且信息丰富的错误消息。使用
aria-describedby将错误消息与相关的表单字段相关联。
示例:可访问图像
错误: <img src="logo.png">
正确: <img src="logo.png" alt="公司徽标 - 示例公司">
示例:可访问表单标签
错误: <input type="text" id="name"> Name:
正确: <label for="name">Name:</label> <input type="text" id="name">
键盘导航:确保无需鼠标即可操作
键盘导航对于无法使用鼠标或其他指针设备的用户至关重要。这包括运动障碍者、喜欢键盘快捷键的人以及使用依赖键盘输入的辅助技术的人。提供强大的键盘导航可确保 web 页面上的所有交互元素都可通过键盘访问和操作。
键盘导航的关键考虑因素:
- 逻辑焦点顺序: 确保焦点顺序(用户按下 Tab 键时元素接收焦点的顺序)是逻辑的且直观的。焦点顺序通常应遵循页面的视觉流程。
- 可见焦点指示器: 为所有交互元素在接收焦点时提供清晰可见的焦点指示器。这允许用户轻松识别当前活动的元素。可以使用 CSS(例如,
:focus伪类)来设置默认浏览器焦点指示器的样式。确保焦点指示器与周围背景之间有足够的对比度。 - 键盘陷阱: 避免创建键盘陷阱,用户在页面的特定元素或部分中卡住,并且无法使用 Tab 键导航出去。对于模式对话框和自定义小部件,这可能尤其成问题。
- 跳过导航链接: 在页面开头提供一个“跳过导航”链接,允许用户绕过重复的导航元素并直接跳转到主要内容。这对于依赖屏幕阅读器或键盘导航的用户尤其有用。
- 访问键(谨慎使用): 访问键(激活特定元素的键盘快捷键)可能很有帮助,但应谨慎使用,因为它们可能会与现有浏览器或操作系统快捷键冲突。如果使用,请提供一种清晰的机制,供用户发现和自定义访问键。考虑不同语言和键盘布局之间潜在的冲突。
- 自定义小部件和键盘交互: 创建自定义小部件(例如,自定义下拉菜单、滑块或日期选择器)时,请确保它们完全可以通过键盘访问。为所有基于鼠标的交互提供键盘等效项。使用 ARIA 属性来定义小部件的角色、状态和属性。小部件的常见 ARIA 模式包括:
- 按钮: 使用
role="button"属性,并确保可以使用 Enter 或空格键激活该元素。 - 链接: 对链接使用带有有效
href属性的<a>元素。 - 表单元素: 使用适当的表单元素,例如
<input>、<select>和<textarea>,并将它们与标签关联。 - 菜单: 使用
role="menu"、role="menuitem"和相关的 ARIA 属性来创建可访问的菜单。允许用户使用箭头键导航菜单。 - 对话框: 使用
role="dialog"或role="alertdialog"属性来创建可访问的对话框。确保在打开和关闭对话框时正确管理焦点,并确保 Escape 键关闭对话框。 - 选项卡: 使用
role="tablist"、role="tab"和role="tabpanel"属性来创建可访问的选项卡界面。允许用户使用箭头键在选项卡之间切换。 - 测试: 仅使用键盘彻底测试键盘导航。注意焦点顺序、焦点指示器以及所有交互元素的可操作性。
示例:跳过导航链接
<a href="#main" class="skip-link">跳到主要内容</a>
<nav><!-- 导航菜单 --></nav> <main id="main"><!-- 主要内容 --></main>示例:设置焦点指示器的样式
button:focus {
outline: 2px solid blue;
}
可访问性测试和验证
定期进行可访问性测试对于识别和解决可访问性问题至关重要。有各种工具和技术可用于可访问性测试,包括:
- 自动可访问性检查器: 这些工具扫描 web 页面以查找常见的可访问性错误。示例包括 WAVE、axe DevTools 和 Google Lighthouse。虽然自动检查器可能很有用,但不应将其作为测试可访问性的唯一手段,因为它们无法检测到所有问题。
- 手动可访问性测试: 这涉及手动查看 web 页面以识别无法通过自动工具检测到的可访问性问题。这包括使用屏幕阅读器、键盘导航和其他辅助技术进行测试。
- 与残疾人进行用户测试: 确保可访问性的最有效方法是让残疾人参与测试过程。他们的反馈可以为网站对具有不同需求的个人的可用性提供宝贵的见解。
WCAG 和可访问性标准
Web 内容可访问性指南 (WCAG) 是一套国际公认的指南,用于使 web 内容更易于访问。WCAG 由万维网联盟 (W3C) 开发,并为不同级别的可访问性一致性(A、AA 和 AAA)提供了一套全面的成功标准。努力达到 WCAG 一致性是创建可访问 web 体验的关键一步。许多国家和地区都有法律和法规要求网站遵守 WCAG。示例包括:
- Section 508(美国): 要求联邦机构使其电子和信息技术对残疾人可访问。
- 安大略省残疾人无障碍法 (AODA)(加拿大): 要求安大略省的组织使其网站对残疾人可访问。
- 欧洲无障碍法 (EAA)(欧盟): 为各种产品和服务(包括网站和移动应用程序)设定了无障碍要求。
全球考虑因素
在为全球受众设计和开发可访问的网站时,必须考虑以下因素:
- 语言和本地化: 确保网站已针对不同的语言进行适当的本地化,包括图像、表单标签和其他文本元素的替代文本。考虑不同字符集和文本方向(例如,从右到左的语言)的影响。
- 文化考虑因素: 注意可能影响可访问性的文化差异。例如,颜色象征意义可能因文化而异,并且某些图像在某些地区可能具有冒犯性或不合适。
- 辅助技术使用情况: 调查不同地区不同辅助技术的普及程度。这有助于确定测试和优化工作的优先级。
- 法律要求: 了解不同国家和地区的可访问性法律和法规。
结论
Web 可访问性 API 对于为残疾用户创建包容性 web 体验至关重要。通过理解和正确实施这些 API,开发人员可以确保 web 内容可供屏幕阅读器和键盘用户访问,从而使个人能够充分参与数字世界。从项目一开始就优先考虑可访问性,并纳入定期的可访问性测试,将为每个人带来更用户友好和公平的 web。通过遵守 WCAG 指南,遵循屏幕阅读器支持和键盘导航的最佳实践,并考虑全球因素,您可以创建真正可供不同国际受众访问的网站。请记住,可访问性不仅仅是一项技术要求,而是对包容性和平等机会的承诺。
拥抱可访问性。为每个人构建。