无障碍模式下,如何为音量控制添加辅助功能

随着人们对无障碍体验的关注度不断提高,许多开发者开始在他们的前端应用程序中实现辅助功能。其中,对于音量控制,增加或减少音量不仅是一项常见的操作,也是一种有用的辅助功能,可以帮助用户更好地理解音频内容。

在本文中,我们将讨论如何在无障碍模式下,为您的音量控制添加辅助功能。我们将探讨一些用户使用辅助技术时可能遇到的挑战,以及如何克服这些挑战来提高用户的无障碍体验。

从用户的角度出发

在开始编写代码之前,我们需要了解一下有哪些用户可能会受到此功能的帮助。

视障用户

对于视障用户,如何增加或减少音量可以使用语音辅助功能或者屏幕阅读器来实现。因此,我们需要为他们提供可言描述的控制选项,这将使得语音控制更方便。

聋哑用户

对于聋哑用户,我们需要提供可见的控制选项。这可以通过图标或符号来实现。

操作受限用户

一些用户可能有行动不便,如业务、永久性或临时性的残疾,可能需要辅助设备来操作音量控制器。因此,我们需要为他们提供易于操作的可访问控制。

开始实现辅助功能

受众和需求已经很清楚了,现在, 我们可以着手实现辅助功能。我们将使用HTML5, CSS3和JavaScript。在本文中,我们将构建一个包含两个箭头的音量控制器,一个是向上的箭头表示增加音量,另一个是向下的箭头表示减少音量。同时,也会给每个箭头添加相应的辅助功能。

HTML5结构

<div> 元素中被包裹着两个带有 href="#" 锚点的 <a> 元素。每个链接均嵌套到 <span> 元素里, 这是为了更好的控制样式和显示文本。 元素的属性 role="button" 可以告诉屏幕阅读器链接的作用是一个可点击的按钮,而不是一个常规的链接。

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

CSS3样式

接下来,我们需要为箭头添加样式,并处理键盘交互和焦点状态的样式。 注意:此处使用的样式包括一些现代浏览器才支持的 CSS 属性。但是,你可以使用替代样式,并利用 PostCSS 或 Autoprefixer 来处理 CSS 自动补全。

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

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

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

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

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

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

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

JavaScript逻辑

接下来,我们来为箭头添加功能。 我们添加交互:点击箭头就更改音量控制的迷你版本(音量值受到覆盖)中的音量值。 最终,我们要不断改进这些功能来考虑无障碍体验辅助功能的使用。

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

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

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

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

添加辅助功能

现在,我们可以开始添加辅助功能了。 由于我们的控件是一个可点击的按钮,因此,我们将使用键盘和屏幕阅读器来共享这一点。 屏幕阅读器使用键盘导航控制GUI操作,可通过使用Tab键选择控制时进入,接着在 GUI 控件内通过使用箭头键 / Enter键与控件交互完成调整音量的操作。

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

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

但是,现在我们的箭头被聚焦时,并没有给用户提示“音量已增加”或“音量已降低”等的相关信息。 输入设备也无法获取这些按钮状态通知。 因此,这就意味着我们要向 屏幕阅读器 提供相关的信息。

关于屏幕阅读器比较独特的是它需要一个语义表达套件来阐述相关的信息。 如果使用的语法不是标准化的,则可能会给用户的使用带来一些困难。 在这种情况下,我们需要使用 aria-live 属性上的状态改变来反馈音量的变化

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

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

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

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

测试您的辅助功能

这是我们可以用来测试我们的辅助功能的一些问题。

  1. 使用有视力问题的屏幕阅读器用户测试,以确保他们可以成功使用音量控制器,并得到正确的音量状态更新。
  2. 尝试使用辅助键盘来测试您的音量控制器,以确保它可以使用键盘导航操作。
  3. 使用不同的浏览器和辅助技术测试您的音量控制器,以确保它能够与这些技术协同工作。

结论

无障碍设计不仅对包含残障人群,对一般人群都有很大益处。良好的无障碍设计意味着页面可以针对不同的用户进行优化,包括使用助听器或屏幕阅读器的人。 音量控制器可以成为辅助技术的一个有用特性,因此它应该是任何音频应用程序中的重要部分。 除了在页面上实现无障碍设计以外,我们应该也让网站的用户自动获取最新的版本,以去除任何低质量的特性和修复任何潜在的固有性缺陷。

示例代码

完整的示例代码可以在下面的 Github 地址获得。

https://github.com/blueedgetechno/a11y-volume-controls

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/670fc6405f55128102673ea8


猜你喜欢

  • MongoDB 中数据迁移的最佳实践

    在开发前端应用程序时,我们经常需要对数据库进行操作,确保应用程序能够处理和存储大量数据。MongoDB 是一个非常流行的 NoSQL 数据库,它提供了灵活的数据建模和快速的读写性能,使其成为前端工具箱...

    6 天前
  • PWA 技术的应用场景及优势介绍

    作为前端开发者,了解 PWA 技术已经不再是可选项,而是成为必备技能之一。本文将介绍 PWA 的应用场景和优势,并附带示例代码进行演示和学习。 什么是 PWA? PWA 全称是 Progress We...

    6 天前
  • .NET程序性能优化技巧汇总

    如果你是一名.NET前端开发者,你一定知道.NET程序性能优化的重要性。最大化性能可以使你的网站在用户眼中看起来更快、更流畅,并且可以增加网站的可靠性和可用性。在本文中,我们将分享.NET程序性能优化...

    6 天前
  • Babel 常用插件介绍与使用方法

    随着前端技术的发展,JavaScript也越来越重要,为了让不同浏览器和不同版本的JavaScript发挥类似的效果,如今我们采用了一种被称为“Babel”的工具。

    6 天前
  • RxJS 中的计时器(timer)操作符及应用场景

    RxJS 是一个流行的 JavaScript 库,用于处理异步和事件驱动的编程。它就像一个工具箱,其中包含了许多操作符,您可以使用这些操作符来过滤、转换和组合数据流。

    6 天前
  • Express.js 路由模块的最佳实践

    Express.js 是一个基于 Node.js 平台构建的 Web 应用程序框架,它提供了一系列强大的功能,包括路由。路由是指将请求的 URL 映射到相应的处理函数。

    6 天前
  • 响应式设计下优化网站加载速度的技巧

    在今天的互联网时代,移动设备已经成为了人们生活和工作中不可或缺的一部分。为了保证在不同设备上都能良好地显示网站内容,响应式设计已成为了不可或缺的一部分。然而,响应式设计会带来网站加载速度下降的问题。

    6 天前
  • 在 Hapi.js 中使用 Sequelize 操作 MySQL 数据库

    在现代 Web 开发中,前端和后端已经越来越模糊。前端开发人员必须掌握后端开发技能以便于进行全栈开发。本文将介绍如何在 Hapi.js 中使用 Sequelize 操作 MySQL 数据库。

    6 天前
  • ESLint 的 10 个最佳练习

    介绍 ESLint 是一款用于 JavaScript 代码检查的工具。它可以帮助前端开发者在写代码时发现潜在的问题,提高代码的质量和可维护性。然而,ESLint 本身并不是万能的,在使用时还需要遵循一...

    6 天前
  • Jest 和 Enzyme 结合进行响应式组件测试

    在前端开发中,测试是一个至关重要的部分。Jest 和 Enzyme 是两个非常受欢迎的测试框架之一,它们都能有效地帮助开发人员进行测试。本文将详细介绍 Jest 和 Enzyme 结合进行响应式组件测...

    6 天前
  • 使用 ECMAScript 2020 的 Class Property Declarations 减少代码复杂度

    ECMAScript 2020 带来了许多新功能,其中之一是类属性声明 (Class Property Declarations)。这项新功能为前端开发人员提供了一种简化代码的方式,从而减少代码复杂度...

    6 天前
  • Fastify 帮助解决 CORS 问题的技巧

    CORS 是一种浏览器安全策略,用于防止跨域攻击。 在前端开发中,开发人员通常需要与不同来源的后端 API 进行交互,并且在该过程中可能会遇到 CORS 问题,这将导致浏览器阻止从其他来源加载资源。

    6 天前
  • 如何使用 GraphQL 响应数据的过滤器?

    GraphQL 是一种查询语言,能够更好地应对多种数据需求。在前端开发中,GraphQL 已经变得非常流行,因为它允许开发人员获取所需的数据。GraphQL 通过查询和变异语句使用 schema 的形...

    6 天前
  • 如何在 Mocha 测试框架中测试 Web 应用程序?

    前端开发人员必须始终确保他们的 Web 应用程序在各种情况下都能正常运行,而测试是这个过程中不可或缺的一步。Mocha 是一个流行的 JavaScript 测试框架,它可以帮助开发人员编写可靠的单元测...

    6 天前
  • 如何在 Cypress 中检查 Cookie

    介绍 Cypress 是一个基于 JavaScript 的自动化测试工具,它提供了强大的 API 和一系列内置的功能,使得测试变得简单、快速和可靠。Cookie 是基于浏览器的存储机制,它们可以用于多...

    6 天前
  • 如何使用无障碍技术提高用户交互

    在前端开发中,良好的用户交互体验是非常重要的。然而,我们也需要关注那些有视觉或听觉障碍等残疾人群体的用户。使用无障碍技术可以帮助我们提高这部分用户的体验,并且也有助于提高整个网站的可用性。

    6 天前
  • Flask-RESTful 中使用 Marshmallow 进行数据验证和序列化

    Flask-RESTful 是一个基于 Flask 的构建 Web API 的扩展。在 Flask-RESTful 中,使用 Marshmallow 进行数据验证和序列化是一种很好的方法。

    6 天前
  • Kubernetes 中服务的外部暴露

    在 Kubernetes 中,想要让服务能够被外部访问,需要对服务进行外部暴露。下面将介绍 Kubernetes 中三种常用的服务外部暴露方式,以及它们的使用场景和具体操作方法。

    6 天前
  • Babel 帮你快速学习 ECMAScript | ES6 开发环境设置

    随着 ES6 的推出,前端开发者们开始迎来了一个全新的世界。新的 JavaScript 标准引入了许多新的语法和功能,这些更新显著提高了开发者的效率和代码的可读性。

    6 天前
  • RxJS 中的自定义操作符及其实现方式

    RxJS是一个流式编程的库,它提供了一些强大的操作符(operator),可以用于处理数据流。但是,这些操作符并不能满足所有的需求,这时候就需要使用自定义操作符了。

    6 天前

相关推荐

    暂无文章