ARIA 简介

ARIA 和非原生 HTML 语义简介

Alice Boxhall
Alice Boxhall
Dave Gash
Dave Gash
Meggin Kearney
Meggin Kearney

迄今为止,我们一直在鼓励使用原生 HTML 元素,因为它们可为您提供焦点、键盘支持和内置语义,但有时简单布局和原生 HTML 达不到目的。例如,弹出式菜单这个很常见的界面构件目前尚无相应的标准化 HTML 元素。也没有提供“用户需要尽快了解与此有关的信息”之类语义特性的 HTML 元素。

因此,在本节课中,我们将探究如何表达 HTML 无法自行表达的语义。

无障碍网络倡议的无障碍丰富互联网应用规范(WAI-ARIA,简称 ARIA)适用于跨越某些领域的障碍,这些领域存在的无障碍问题无法通过原生 HTML 进行管理。它通过允许您指定某些属性来发挥作用,这些属性可以修改元素转换为无障碍树的方式。我们来看一个示例。

在以下代码段中,我们使用列表项作为一种自定义复选框。CSS“checkbox”类为元素提供了所需的视觉特性。

<li tabindex="0" class="checkbox" checked>
    Receive promotional offers
</li>

尽管这适合视力正常的用户,屏幕阅读器却不会给予任何指示来说明该元素旨在作为复选框使用,因此弱视用户可能会完全错过该元素。

不过,如果使用 ARIA 属性,我们就可以为元素提供缺少的信息,以便屏幕阅读器能正确解读它。我们在以上代码中添加了 rolearia-checked 属性,将该元素显式标识为一个复选框,并指定它在默认情况下处于选中状态。该列表项现在将添加到无障碍树中,屏幕阅读器将把它正确地报告为一个复选框。

<li tabindex="0" class="checkbox" role="checkbox" checked aria-checked="true">
    Receive promotional offers
</li>

ARIA 通过更改和补充标准 DOM 无障碍树来发挥作用。

标准 DOM 无障碍树。
ARIA 补充后的无障碍树。

尽管 ARIA 允许我们为任何页面元素对无障碍树进行细微(乃至彻底的)修改,但那却是其唯一更改之处。ARIA 不会补充元素的任何固有行为;它不会使元素可获焦点,也不会为其提供键盘事件监听器。那仍旧是我们开发任务的组成部分。

请务必注意,不需要重新定义默认语义。无论如何使用,标准 HTML <input type="checkbox"> 元素都不需要额外的 role="checkbox" ARIA 属性就能正确声明。

同样值得注意的是,某些 HTML 元素上可以使用的 ARIA 角色和属性会受到限制。例如,不得对标准 <input type="text"> 元素应用任何额外角色/属性。

如需了解详情,请参阅 ARIA in HTML 规范

让我们看一看 ARIA 还能提供哪些其他功能。

ARIA 能做什么?

正如您在复选框示例中所见,ARIA 可以修改现有元素语义,也可以向不存在原生语义的元素添加语义。它还可以表达 HTML 中根本不存在的语义模式,例如菜单或标签页面板。ARIA 允许我们创建的小部件型元素通常无法通过普通 HTML 实现。

  • 例如,ARIA 可以添加只向辅助技术 API 公开的附加标签和说明文本。
<button aria-label="screen reader only label"></button>
  • ARIA 表达的元素间语义关系能够扩展标准父项/子项联系,例如控制特定区域的自定义滚动条。
    <div role="scrollbar" aria-controls="main"></div>
    <div id="main">
    . . .
    </div>
  • 并且 ARIA 可以使页面的某些部分具有“实时性”,让它们在发生变化时立即通知辅助技术。
    <div aria-live="polite">
      <span>GOOG: $400</span>
    </div>

ARIA 系统的其中一个核心层面是其角色集。在无障碍术语中,角色是指特定界面模式的简略指示器。我们可以通过任意 HTML 元素上的 role 属性使用 ARIA 提供的模式词汇表。

我们在上例中应用 role="checkbox" 时,是指示辅助技术,元素应遵循“复选框”模式。也就是说,我们可以保证它具有选中状态(选中或未选中),并且这一状态可使用鼠标或空格键进行切换,就像切换标准 HTML 复选框元素那样。

事实上,由于键盘互动在屏幕阅读器使用中占据着重要地位,因此在创建自定义 widget 时,请务必始终在 tabindex 属性所在的位置应用 role 属性;这可确保键盘事件发送到正确的位置,并且当焦点落在某个元素上时,系统会准确传达其角色。

ARIA 规范分类介绍了 role 属性以及可与这些角色联用的关联 ARIA 属性的可接受值。这是最佳的权威信息来源,其中包含 ARIA 角色和属性如何协作,以及如何以浏览器和辅助技术支持的方式使用它们。

所有可用 ARIA 角色的列表。

不过,该规范非常深奥;一个更为浅显的入门读物是 ARIA 制作实践文档,该文档探究了使用可用 ARIA 角色和属性的最佳做法。

ARIA 还提供了可对 HTML5 中提供的选项进行扩展的地标角色。如需了解详情,请参阅地标角色设计模式规范。