无障碍设计的最佳实践:用 React 实现键盘焦点

阅读时长 8 分钟读完

引言

在现在的数字时代,我们使用各种设备和技术来访问网站和应用程序,其中包括键盘、屏幕阅读器和其他辅助技术。针对使用这些设备和技术的用户,前端开发人员需要开发无障碍设计的网站和应用程序。这不仅包括考虑视觉设计和布局,还需要考虑如何使网站和应用程序在使用键盘或屏幕阅读器时易于使用。

在这篇文章中,我们将讨论无障碍设计的最佳实践,着重介绍如何实现键盘焦点、键盘事件的处理和如何访问键盘焦点元素。我们将使用 React 库来实现这些功能。

实现键盘焦点

在无障碍设计中,键盘焦点是指当用户使用键盘来浏览网站或应用程序时,焦点应在屏幕上可见的元素之间移动。为了实现键盘焦点,我们需要添加以下代码:

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

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

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

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

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

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

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

上面的代码创建一个 React 组件 App,它有三个按钮,用于演示如何实现键盘焦点。变量 focusIndex 保存当前焦点所在的索引。变量 tabbableElements 是可焦点的元素的数组。在 effect 中设置它们的值时,我们选择处理所有可焦点的元素,并将它们保存在 tabbableElements 中。

键盘事件的处理函数 handleKeyDown 使用 useCallback 包装,以便在每次渲染时都能缓存它。这样,我们的代码将能够更好地与 React 一起使用,更加高效。handleKeyDown 监听键盘事件,当按下“向下箭头”或“制表符”键时,我们将焦点移到下一个可焦点的元素,并使用阻止默认事件的方式防止切换到下一个输入框;当按下“向上箭头”键时,我们将焦点移到上一个可焦点的元素。

在 App 组件中,我们使用 onKeyDown 属性添加事件监听函数。

处理键盘事件

在上面的示例中,我们演示了如何在 React 组件中处理键盘事件。如果您是网站或应用程序的开发者,您可能需要为用户提供更多键盘操作。以下是一些常见的例子:

  • Enter 或空格键执行一个操作。
  • Escape 键关闭当前打开的弹出窗口或下拉菜单。
  • 焦点在表单元素中时,当用户提交表单或撤销更改时触发的事件。
  • 通过上下箭头移动和选择的下拉列表等。

以下是一个使用 React 实现自定义键盘事件的示例:

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

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

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

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

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

在这个示例中,我们在输入框内监听“Enter”键的按下事件。当按下“Enter”键时,我们将输入框中的文本添加到前面的文本中,并在页面上显示它。这只是一个简单的示例,但它说明了在 React 组件中如何处理键盘事件。

访问键盘焦点元素

在无障碍设计中,要访问键盘焦点元素是有用的。例如,当我们有一个非常大的表格,用户可能需要使用键盘来浏览和聚焦在表格的某一行或列上时,这将很有帮助。以下是一个使用 React 访问键盘焦点元素的示例:

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

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

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

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

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

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

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

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

上面的代码创建了一个包含帖子数据的表格。每行都具有 id 属性,并在渲染时设置了焦点。因此,我们可以使用“向上箭头”和“向下箭头”键来聚焦于不同的行。

结论

无障碍设计是一个重要的话题,可以有效地提高网站和应用程序的易用性和使用体验。在本文中,我们介绍了使用 React 实现键盘焦点的最佳实践、如何处理键盘事件和如何访问键盘焦点元素。这些知识点可以帮助我们创建适用于各种用户的更加友好和易于使用的网站和应用程序。

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

纠错
反馈