跳转到主要内容
Niquelao 西班牙语 Web 可访问性与前端开发:涵盖 WCAG 标准、可访问组件及 Firefox 扩展,并提供真实代码详解。

本站部分链接为联盟营销链接:如果您通过这些链接购买,我们可能会获得佣金,且不会增加您的成本。这绝不会影响我们的推荐建议。详情请参阅我们的联盟披露声明。 联盟营销披露.

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.

”,“main”对应于“
”,“navigation”对应于“

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