ARIA 角色是什么?开发人员实用指南
ARIA 角色是什么? ARIA 角色是 87 个定义值的词汇表(从 WAI-ARIA 1.2 开始),它们告诉辅助技术元素是什么以及它应该如何表现,而不管其 HTML 标签如何。像“button”、“navigation”或“dialog”这样的角色会将通用的“
为什么 ARIA 角色存在
要理解什么是 aria 角色,我们必须看到它们解决了 HTML 本身无法解决的结构问题。原生 HTML 元素具有隐式语义:“ 有些角色如果使用不当会产生严重的危害。 通过短序列进行工作可以防止大多数 ARIA 角色错误。要了解什么是 ARIA 角色以及如何使用它们,请执行以下步骤: 第三步到第六步是大多数自定义小部件错误发生的地方。在第五步中跳过键盘模式会创建一个可以正确宣告但无法操作的小部件,这可以说比根本没有 ARIA 更糟糕。 自动化工具可检测结构错误:无效的角色值、缺少必需的属性以及应用于不支持它们的元素的角色。 axe-core 是许多浏览器扩展背后的引擎,它检查 ARIA 规则的定义子集。 IBM Equal Access Accessibility Checker 和 W3C 自己的 Nu HTML Checker 也显示了角色滥用。 自动化工具无法验证角色是否发出正确的通知或键盘交互是否有效。仍然需要使用 NVDA 和 Firefox、JAWS 和 Chrome、或 VoiceOver 和 Safari 进行手动测试。 Accessibility Insights for Web 扩展将自动检查与指导性手动评估(包括键盘和屏幕阅读器验证)相结合。 ARIA 规范本身、WAI-ARIA 创作实践指南和 HTML-AAM 映射文档是 aria 角色的权威参考。 MDN Web Docs ARIA 参考是一个方便且经过精心挑选的辅助源,它引用了每个角色的规范。 要了解 ARIA 角色是什么,请记住它们定义了元素对于辅助技术的用途。 ARIA 角色是附加到 HTML 元素的标签,用于告诉辅助技术该元素代表什么。 角色描述元素的类型,而属性描述其状态、值或关系。 WAI-ARIA 1.2 定义了 87 个角色,分为六类:抽象、小部件、文档结构、地标、活动区域和窗口。像 不。ARIA 使用的第一条规则是,只要存在具有所需语义和行为的原生 HTML 元素,就首选该元素。使用 现代浏览器和屏幕阅读器可靠地支持 是的。覆盖隐式角色可能会丢失有用的语义,例如当role="presentation" 和 role="none" 从元素中删除语义,在某些实现中,从其所需的后代中删除语义。应用 role="application" 会将屏幕阅读器切换到停止拦截击键的模式,如果自定义键盘处理不完整,这可能会困住用户。选择角色的决策框架
<button>、<select>、<details> 或 <dialog> 适合,请使用它。测试和验证工具
要点
aria-checked 的 role="checkbox" 无效且无法使用。资料来源和进一步阅读
常见问题
简单来说,ARIA 角色是什么?
<div role="button"> 被声明为按钮而不是通用文本。角色提供底层标签未提供的含义,但它们本身不添加任何行为、焦点处理或键盘支持。ARIA 角色和 ARIA 属性之间有什么区别?
role="slider" 标识滑块; aria-valuenow="50" 报告其当前位置,而 aria-labelledby 指向其标签。角色和属性一起使用,每个角色定义它支持哪些属性。ARIA 角色有多少个?
widget 和 input 这样的抽象角色仅存在于规范的内部分类中,永远不应该用 HTML 编写。这个数字随着每个规范的修订而增加。我应该使用 ARIA 角色而不是语义 HTML 吗?
<button> 而不是 <div role="button">,使用 <nav> 而不是 <div role="navigation">。 ARIA 角色是不存在合适的原生元素的情况下的后备方案。ARIA 角色适用于所有浏览器和屏幕阅读器吗?
button、link、heading 和 navigation等核心角色。更新或更专业的角色(包括数字出版模块中的角色)支持程度不一。只有通过使用受众使用的特定浏览器和屏幕阅读器组合进行测试才能确定。添加 ARIA 角色会破坏可访问性吗?
role="presentation"应用于数据表时。如果自定义键盘处理不完整,应用 role="application" 可能会阻止用户。原生元素中的冗余角色会产生不必要的噪音,有时还会导致冲突的播报。
Frequently asked questions
简单来说,ARIA 的角色是什么?
ARIA 角色是附加到 HTML 元素的标签,用于告诉辅助技术该元素代表什么。 <div role='button'> 被声明为按钮而不是通用文本。角色提供底层标签未提供的含义,但它们本身不添加任何行为、焦点处理或键盘支持。
ARIA 角色和 ARIA 属性之间有什么区别?
角色描述元素的类型,而属性描述其状态、值或关系。 role='slider' 标识滑块; aria-valuenow='50' 报告其当前位置,aria-labelledby 指向其标签。角色和属性一起使用,每个角色定义它支持哪些属性。
ARIA 有多少个角色?
WAI-ARIA 1.2 定义了 87 个角色,分为六类:抽象、小部件、文档结构、地标、活动区域和窗口。像 widget 和 input 这样的抽象角色仅存在于规范的内部分类中,并且永远不应该用 HTML 编写。这个数字随着每个规范的修订而增加。
我应该使用 ARIA 角色而不是语义 HTML 吗?
不。ARIA 使用的第一条规则是,只要存在具有所需语义和行为的原生 HTML 元素,就首选该元素。使用 <button> 而不是 <div role='button'>,使用 <nav> 而不是 <div role='navigation'>。 ARIA 角色是不存在合适的本机元素的情况下的后备方案。
ARIA 角色适用于所有浏览器和屏幕阅读器吗?
现代浏览器和屏幕阅读器可靠地支持按钮、链接、标题和导航等核心角色。更新或更专业的角色(包括数字出版模块中的角色)提供了更多可变的支持。只有通过使用受众使用的特定浏览器和屏幕阅读器组合进行测试才能确定。
添加 ARIA 角色会破坏可访问性吗?
是的。覆盖隐式角色可能会丢失有用的语义,例如将 role='presentation' 应用于数据表时。如果自定义键盘处理不完整,应用 role='application' 可能会阻止用户。原生元素中的冗余角色会产生不必要的噪音,有时还会导致相互冲突的公告。
Añade accesibilidad en 5 minutos
Widget de accesibilidad con plan gratuito para empezar hoy mismo