无障碍技术实战:使用 WAI ARIA 标准提升复杂交互组件的可访问性

在前端开发中,我们经常需要设计复杂的交互组件,比如下拉菜单、模态框等等。然而,这些组件在设计时往往只考虑了视觉效果,却忽略了可访问性,导致一些用户无法使用这些组件。为了解决这个问题,我们可以使用 WAI ARIA 标准提升复杂交互组件的可访问性。

什么是 WAI ARIA?

WAI ARIA(Web Accessibility Initiative - Accessible Rich Internet Applications)是一个由 W3C 组织推出的标准,旨在提高 Web 应用程序的可访问性。它为开发人员提供了一组属性和角色,用于描述 Web 应用程序中的交互组件,从而使残障用户能够更好地使用这些组件。

WAI ARIA 的作用

WAI ARIA 标准的作用在于描述 Web 应用程序中的交互组件,这些组件可能无法通过 HTML 标签和属性来描述。WAI ARIA 提供了一组属性和角色,用于描述这些交互组件的行为和状态,从而使残障用户能够更好地使用这些组件。

WAI ARIA 标准的使用可以提升 Web 应用程序的可访问性,包括:

  • 视觉障碍用户:使用屏幕阅读器等辅助技术访问 Web 应用程序时,可以通过 WAI ARIA 描述的属性和角色来了解交互组件的行为和状态。
  • 身体障碍用户:使用键盘等辅助设备访问 Web 应用程序时,可以通过 WAI ARIA 描述的属性和角色来操作交互组件。
  • 认知障碍用户:通过 WAI ARIA 描述的属性和角色,可以使交互组件更加可预测和易于理解。

WAI ARIA 的属性和角色

WAI ARIA 标准提供了一组属性和角色,用于描述 Web 应用程序中的交互组件。下面是一些常用的属性和角色:

属性

  • aria-label:为交互组件添加一个描述性文本,用于提供给屏幕阅读器等辅助技术使用。
  • aria-describedby:指定一个元素或多个元素的 ID,用于提供给屏幕阅读器等辅助技术使用,描述交互组件的详细信息。
  • aria-disabled:指定交互组件是否禁用。
  • aria-checked:指定复选框或单选框的选中状态。
  • aria-selected:指定选项卡或列表中的选中状态。
  • aria-expanded:指定下拉菜单或折叠面板的展开状态。

角色

  • button:按钮。
  • link:链接。
  • checkbox:复选框。
  • radio:单选框。
  • textbox:文本框。
  • combobox:下拉菜单。
  • listbox:列表框。
  • menu:菜单。
  • menuitem:菜单项。
  • dialog:模态框。

使用 WAI ARIA 提升可访问性

下面我们以一个下拉菜单为例,来介绍如何使用 WAI ARIA 提升交互组件的可访问性。

HTML 结构

首先,我们需要为下拉菜单添加一个角色和一些属性:

------- ------------------- -------------------- --------------------- -----------------------------
  ----
---------
--- ----------------- ----------- -------------------------------- --------------
  --- ------------------ ---------------------
  --- ------------------ ---------------------
  --- ------------------ ---------------------
-----
  • aria-haspopup 属性指定下拉菜单的类型为弹出式菜单。
  • aria-expanded 属性指定下拉菜单的展开状态,默认为关闭状态。
  • aria-controls 属性指定下拉菜单的控制元素为按钮。
  • role="menu" 属性指定下拉菜单的角色为菜单。
  • aria-labelledby 属性指定下拉菜单的标签为按钮。
  • role="menuitem" 属性指定下拉菜单中的选项为菜单项。

CSS 样式

接下来,我们需要为下拉菜单添加一些 CSS 样式,以使其更加易于使用:

------------- -
  -------- -----
  --------- ---------
  -------- --
  ----------- -----
  -------- --
  ------- --
  ----------------- ------
  ------- --- ----- -----
  ----------- - --- --- ------- -- -- -----
-

----------------------------------- -
  -------- ------
-

------------- -- -
  ------- --
-

------------- -- - -
  -------- ------
  -------- --- -----
  ---------------- -----
  ------ -----
-

------------- -- ------- -
  ----------------- --------
-
  • display: none 属性指定下拉菜单默认隐藏。
  • position: absolute 属性指定下拉菜单的位置为绝对定位。
  • z-index: 1 属性指定下拉菜单的层级为最高。
  • list-style: none 属性去除下拉菜单的列表样式。
  • background-color: white 属性指定下拉菜单的背景色为白色。
  • border: 1px solid #ccc 属性指定下拉菜单的边框为灰色。
  • box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2) 属性指定下拉菜单的阴影效果。
  • #dropdownMenu[aria-expanded="true"] 选择器指定下拉菜单展开时显示,关闭时隐藏。
  • #dropdownMenu li 属性指定下拉菜单中的选项无间距。
  • #dropdownMenu li a 属性指定下拉菜单中的选项为块级元素,添加内边距和颜色。
  • #dropdownMenu li a:hover 属性指定下拉菜单中的选项在鼠标悬停时添加背景色。

JavaScript 交互

最后,我们需要为下拉菜单添加一些 JavaScript 交互,以使其更加易于使用:

----- -------------- - ------------------------------------------
----- ------------ - ----------------------------------------

---------------------------------------- ---------- -
  ----- -------- - -------------------------------------------- --- ------ -- ------
  -------------------------------------------- -----------
  ---------------------
---

------------------------------------- ---------- -
  -------------------------------------------- ---------
---
  • dropdownButton 变量获取按钮元素。
  • dropdownMenu 变量获取下拉菜单元素。
  • click 事件监听按钮的点击事件,切换下拉菜单的展开状态。
  • getAttribute('aria-expanded') 方法获取下拉菜单的展开状态。
  • setAttribute('aria-expanded', !expanded) 方法切换下拉菜单的展开状态。
  • focus() 方法使下拉菜单获取焦点。
  • blur 事件监听下拉菜单的失焦事件,关闭下拉菜单。

总结

使用 WAI ARIA 标准可以提升 Web 应用程序的可访问性,使残障用户能够更好地使用复杂交互组件。在设计交互组件时,我们应该考虑到可访问性,并使用 WAI ARIA 标准来描述交互组件的行为和状态。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6634828cd3423812e4205524