Web Components:如何使用 Aria 标准实现可访问性

阅读时长 8 分钟读完

引言

现代网页应用程序(Web Applications)需要富有表现力和交互性,同时也必须非常可访问。Web开发者不仅需要了解HTML、CSS和JavaScript的基本知识,还需要熟悉可访问性(Accessibility)标准以确保他们开发的应用程序可以被尽可能的人群所访问。在本文中,我们将研究如何使用 Web Components 和 Aria 标准来实现可访问性。

Web Components 是什么?

Web Components 是一组标准(Custom Elements、Shadow DOM、HTML Templates和HTML Imports),可以帮助开发者创建可重用和可组合的Web应用程序组件。它们是在原生Web平台中实现的,而不是依赖于 JavaScript 库(如 React、Angular 或 Vue)。这使得 Web Components 更加灵活,并且能够与现有的 Web 技术无缝集成。

为什么可访问性很重要?

按照 W3C的定义,可访问性描述了创建在广泛范围内的人群中无障碍的 Web 设计,对于老年人、残疾人和那些使用助听器等辅助技术的人来说,网站和应用程序的可用性是至关重要的。 可访问性的概念已成为 Web 开发中的一个基本要素。在采用 Web 组件时,我们必须确保它们也具有良好的可访问性。这是通过使用 ARIA 标准来实现的。

ARIA 是什么?

ARIA (Accessible Rich Internet Applications) 定义了一组语义标记,以增强 Web 内容和 Web 应用程序的可访问性。这些标记可以告诉屏幕阅读器等辅助技术,如何正确解释页面结构和内容。使用 ARIA 标准可以使我们的 Web 组件更具可访问性。

如何使用 ARIA 标准?

在 Web 组件中,不仅要考虑如何使用 ARIA 标准来增强可访问性,而且还需要考虑 ARIA 标记如何应用于组件的不同部分。下面,我们将通过几个示例组件来演示如何使用 ARIA 标准。

按钮组件

在本示例中,我们将演示如何构建一个具有良好可访问性的按钮组件。该按钮组件将使用 ARIA 标准来进行构建。

首先,我们需要创建一个自定义 Web 组件,名为 my-button。示例代码如下:

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

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

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

在上述代码中,我们定义了一个自定义元素 my-button,并实例化了 shadow DOM,包含一个在 template 标记中定义的样式和 slot。接下来,我们需要向组件添加 ARIA 标记,以提高其可访问性。

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

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

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

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

在上述代码中,我们向组件添加了一个 button 元素,并为 button 元素指定了 role 属性和 tabindex 属性。role 属性使辅助技术能够识别按钮元素,而 tabindex 属性使该元素成为可访问的焦点。然后,我们添加了一个 click 事件监听器,来捕获按钮单击的事件。现在,该组件满足可访问性标准。

弹出框组件

在本示例中,我们将演示如何构建一个具有良好可访问性的弹出框组件。该弹出框组件将使用 ARIA 标准来进行构建。

首先,我们需要创建一个自定义 Web 组件,名为 my-dialog。示例代码如下:

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

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

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

在上述代码中,我们定义了一个自定义元素 my-dialog,并实例化了 shadow DOM,包含一个在 template 标记中定义的样式,dialog 元素和两个 slot元素。我们还添加了两个 ARIA 标记:role=”dialog”和aria-labelledby=”dialogTitle”,以提高可访问性。现在,我们可以在该组件的使用中添加 dialog 标记。

在上述代码中,我们使用了 my-dialog 组件,并添加了两个 slot 元素来定义标题和正文。这使我们可以在外部自定义组件的内容,使它们能更适应特定的应用场景。

如何测试可访问性?

在创建 Web 组件时,确保它们满足可访问性标准太重要。为了测试组件的可访问性,可以使用辅助技术(如声音提示、屏幕阅读器和更多)。许多辅助技术提供了测试 Web 组件的浏览器扩展程序(如 ChromeVox、NVDA 和 JAWS)。同时,许多屏幕阅读器还提供了报告 Web 内容的软件(如 Accessibility Insights),从而帮助我们确保创建的组件不仅流畅、简洁,还是可访问的。

结论

Web Components 是让 Web 应用程序更加模块化和可维护的一个好方法。与此同时,给我们提供了确保 Web 应用程序可访问性的最佳开发实践。使用可访问性标准和 ARIA 属性,我们可以使 Web 组件更便于使用,从而使每个人都能轻松地使用我们的网站和 Web 应用程序。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67471110e504cb428ed1136d

纠错
反馈