使用 ARIA 属性实现无障碍性:如何支持键盘及屏幕阅读器访问

当我们在开发 Web 应用时,我们需要确保我们的应用对于残障人士也是友好的。这样我们可以为所有用户提供平等的使用体验。这就是无障碍性(Accessibility)的概念。ARIA(Accessible Rich Internet Applications)是实现无障碍性的有力工具之一。

在本文中,我们将学习如何使用 ARIA 属性来实现无障碍性。我们将深入探讨支持键盘和屏幕阅读器访问的实现方式,并且通过示例代码来演示其使用。

支持键盘访问

当我们考虑无障碍性时,我们需要确保我们的应用可通过键盘操作。这是因为有些残障人士使用屏幕阅读器,他们无法使用鼠标来操作应用。我们需要让应用可以通过键盘操作。下面是一些示例代码:

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

在这个例子中,我们使用一个 <div> 元素来模拟一个按钮。我们为其设置 role 属性来告诉屏幕阅读器此元素作为按钮使用。我们对它设置了 tabindex 属性来设置元素顺序。键盘导航将按照 tabindex 属性值的顺序移动。

我们还使用了 aria-label 属性来为屏幕阅读器提供更好的上下文信息。在本例中,我们指定“点击我”作为按钮的标签。

我们使用 onclick 事件来添加按钮的交互,当用户点击该按钮时会触发 alert() 函数。如果需要使用键盘点击按钮,我们可以按下 EnterSpace 按钮。

支持屏幕阅读器访问

屏幕阅读器是一种软件,其能够将屏幕上的文本转换成语音或者展示在盲文显示器上。当我们考虑无障碍性时,我们需要确保屏幕阅读器能够正确地读取我们的应用的内容。我们可以使用 ARIA 属性来为屏幕阅读器提供更好的上下文信息。

相关 ARIA 属性的使用

  • aria-hidden

该属性用于告诉屏幕阅读器是否隐藏了某个元素。当该属性是 true 时,将不会在屏幕阅读器中出现。

---- ----------------------------------------
  • aria-labelledby

该属性用于指定当前元素的标签 ID,该 ID 的元素包含了能够更好地描述当前元素内容的文本。这是在当前元素没有一个合适 altaria-label 元素的情况下使用的。

---- ----------------------------
---- --------------- ------------------------
  • aria-describedby

该属性与 aria-labelledby 相似,不同之处在于该属性链接到的 ID 元素通常是目前不存在于文档流中的。它通常用于描述性内容,如工具提示和关于页面区域的追加信息。

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

示例

下面是一个包含上述三种 ARIA 属性的例子。在这个例子中,我们将 <div> 元素用作导航菜单,当用户使用键盘或鼠标悬停时将打开该菜单。

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

我们首先将 <button> 元素设置为菜单,使用 aria-haspopup 属性告诉屏幕阅读器此按钮有一个下拉菜单。使用 aria-controls 属性将下拉菜单与此按钮相关联。

当菜单打开时,我们可以通过设置 aria-expanded 属性来改变按钮的状态。当菜单关闭时,该属性应为 false

当用户鼠标悬停在此按钮上时,onmouseenter 事件将被触发,并且菜单将被打开。onkeydown 事件将监听用户按下 SpaceEnter 按钮,并打开或关闭菜单。这里使用了 event.preventDefault() 函数来防止浏览器默认行为。

对于菜单项,我们使用了 role="menuitem"<ul> 元素的 role="menu" 来告诉屏幕阅读器这是一个菜单项。我们还使用 <a> 元素表示链接,在 role="menuitem" 中引用此元素。这通过使用 aria-labelledby 属性进行链接。

这个例子可以作为一个起点,我们可以根据实际情况来使用 ARIA 属性。我们可以使用 ARIA 属性来改变设备和用户体验之间的差异,提供平等的用户体验。

结论

在本文中,我们学习了如何使用 ARIA 属性来提供无障碍性。我们深入探讨了支持键盘和屏幕阅读器访问的实现方式,并且提供了示例代码。

ARIA 作为一个强大的无障碍性工具,它可以让我们的应用更加通用,无论使用什么设备,都能够为用户提供平等的用户体验。

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