ARIA 角色示例:完整指南
ARIA 角色示例展示了角色属性如何将界面元素映射到可访问性树,WAI-ARIA 1.2 规范定义了 6 个角色类别(小部件、文档结构、地标、活动区域、窗口和摘要),涵盖 80 多个具体角色。本指南为每个类别提供了可供复制的实际示例,以及确定角色何时提供帮助以及何时主动造成伤害的规则。
要点
- ARIA 角色告诉辅助技术一个项目是什么;它们从不自行添加行为、焦点或键盘支持。
- 使用 ARIA 的第一条规则是优先选择原生 HTML 元素,这些元素已经带有隐式角色、状态和键盘管理。
- 六个 WAI-ARIA 1.2 角色类别是小部件、文档结构、地标、活动区域、窗口和摘要 - 抽象角色永远不应出现在您的标记中。
- 地标角色是您可以添加到现有 XHTML/CSS 站点的最具成本效益和最低风险的 ARIA。
- 小部件角色几乎总是需要 JavaScript 映射来进行键盘交互和状态处理,否则它们会产生比纯 HTML 更糟糕的体验。
- 使用屏幕阅读器和自动检查器验证每个角色;规范中的有效角色对于您的内容来说可能仍然是错误的。
ARIA 角色的实际用途
ARIA 角色是您放置在“role”属性中的标记,用于替换或提供可访问性树中元素的语义标识。 <div role="button"> 告诉屏幕阅读器宣布“按钮”,但浏览器仍然将其视为通用容器:它不可聚焦,不响应 Enter 或 Space,并且没有禁用状态。声明的语义与实际行为之间的差距是 ARIA 失败的最常见原因。这些是常见的咏叹调角色示例,说明语义如何与行为不同。
WAI-ARIA 规范由 W3C 的可访问富互联网应用程序工作组维护,定义了角色以及状态和属性。角色是“它是什么”层;诸如 aria-expanded、aria-checked 和 aria-label 之类的状态和属性是“它所处的条件”层。没有所需状态的角色是不完整的 - role="checkbox" 需要 aria-checked,而 role="combobox" 需要 aria-expanded 加上一个受控列表框。
原生 HTML 元素具有隐含的角色。 <button> 对应于按钮角色,<nav> 对应于导航,<h1> 到 <h6> 对应于标题,<input type="checkbox"> 对应于复选框。由于浏览器自动提供角色、键盘行为和状态,因此使用 ARIA 的首要规则(记录在 W3C 的 ARIA 创作实践指南中)是只要存在等效元素就使用本机语义。仅当没有合适的本机元素时才查找显式角色,例如自定义树视图或从“
WAI-ARIA 的六个角色类别
WAI-ARIA 1.2 将角色分为六类,了解角色属于哪一类可以告诉您需要编写多少 JavaScript。以下是一些常见的咏叹调角色示例:
Related: — Superposición de IA que promete cumplimiento WCAG en 48 horas.
| 类别 | 目的 | 角色示例 | 需要 JavaScript 吗? |
|---|---|---|---|
| 小部件 | 互动控制 | button、checkbox、tab、slider、combobox | 是的 — 键盘 + 状态 |
| 文档结构 | 内容组织 | heading、list、listitem、table、article | 没有 |
| 地标 | 导航页面区域 | banner、main、navigation、complementary | 没有 |
| 直播区域 | 公布动态更新 | alert、status、log、timer | 通常 - 触发更新 |
| 窗口 | 子窗口和对话框 | dialog、alertdialog | 是的——焦点管理 |
| 摘要 | 超级角色,从未创作 | widget、input、section、landmark | 不适用 — 请勿使用 |
抽象角色只是为了组织分类而存在。在 HTML 中写入 role="input" 或 role="section" 会产生验证错误,并会产生不可预测的公告,因为这些角色没有针对辅助技术的定义行为。
地标角色示例
地标角色是最安全、最有影响力的 ARIA 角色示例,您可以添加到旧的 XHTML/CSS 站点,因为它们不需要 JavaScript 并且直接映射到您已有的区域。一个典型的页面骨架:
<header role="banner">
<nav role="navigation" aria-label="Principal">
<ul>...</ul>
</导航>
</标题>
<主要角色=“主要”>
<文章>...</文章>
<aside role="complementary" aria-label="Artículos relacionados">...</aside>
</主要>
<页脚角色=“内容信息”>...</页脚>
每个标记角色对应于一个原生元素 - 顶层的“banner”对应于“
Worth a look: — Accesibilidad gestionada: automatización combinada con revisión humana.
Frequently asked questions
ARIA 角色是什么以及它们如何工作?
ARIA 角色是角色属性中的值,用于定义可访问性树中元素的标识,以便屏幕阅读器正确地读出它。它们只改变语义,而不改变外观、焦点或键盘行为。 WAI-ARIA 1.2 规范定义了 6 个角色类别和 80 多个具体角色,每个角色都有所需的状态和属性。
我什么时候应该使用 ARIA 角色而不是本机 HTML?
仅当没有本机 HTML 元素提供您需要的语义时,才使用 ARIA 角色。 <button>、<nav> 和 <input type='checkbox'> 等本机元素具有隐式角色以及内置键盘支持和状态管理。 ARIA 使用的第一条规则是优先使用本机语义,并且仅为自定义小部件或无法重构的遗留标记添加显式角色。
ARIA 角色和 ARIA 属性之间有什么区别?
ARIA 角色回答“这个项目是什么”,而 ARIA 属性(例如 aria-expanded、aria-checked 和 aria-label)回答“它处于什么状态”或“它叫什么”。角色及其所需的属性协同工作:作为 aria 角色示例,如果没有 aria-checked,role='checkbox' 是不完整的,而 role='combobox' 需要 aria-expanded 加上受控列表框。
我可以在任何 HTML 元素上使用 ARIA 角色吗?
ARIA 角色可以应用于大多数元素,但某些组合是无效或有害的。永远不应该创建诸如小部件和输入之类的抽象角色。将链接的角色更改为 role='button' 会破坏链接的预期行为,而可聚焦元素上的 role='presentation' 会删除其语义,同时保留 Tab 键顺序。
ARIA 角色可以在没有 JavaScript 的情况下工作吗?
文档结构和地标角色无需 JavaScript 即可工作,因为它们仅修改语义。选项卡、滑块和组合框等小部件角色需要 JavaScript 来实现键盘交互和更新状态 - 如果没有它,元素会宣称自己是一个控件,但其行为却不像控件,这比纯 HTML 更糟糕。
如何检查我的 ARIA 角色是否正确?
结合自动化和手动测试。运行 ax DevTools、WAVE 或 Lighthouse 以检测无效角色和缺少所需属性,然后使用 NVDA、JAWS 和 VoiceOver 进行测试以确认公告和键盘行为。 Chrome 和 Firefox DevTools 中的辅助功能面板显示计算出的角色,显示浏览器覆盖或忽略的任何角色。
Añade accesibilidad en 5 minutos
Widget de accesibilidad con plan gratuito para empezar hoy mismo