如何开发无障碍的前端Web 网页

Web 无障碍设计(Accessibility in Web design,也叫网站可及性 )是要让所创建的网站对所有用户都可用/可访问,不管用户的生理/身体能力如何、不管用户是以何种方式访问网站。

让网页完全支持无障碍功能有一定成本,我们可以在让代码更规范,更语义化等方面去改变;比如给图片标签加上一个alt属性描述,这个举动只需要1秒钟的时间,带来的用户体验确是跨越性的,也许只有一个视力障碍的用户在访问我们的官网,我想他在访问我们页面-点击图片的时候,朗读出图片描述信息的时候,一定会很欣慰。

无障碍好处有哪些?(帮助残障人士,并使网站收益)

为什么不是所有网站都能无障碍访问?你可能也会问自己为什么存在 “无障碍” 的问题,为什么不是所有网站都能让所有用户无障碍访问?要进行无障碍设计有许多不同原因,其中包括残疾人用户的需求、不同的人访问和使用互联网的不同途径和方式。

帮助视障用户

视障用户包括色盲用户、完全失明用户(盲人)。如果图片不带有相关文字描述,则视障用户在理解图片方面会存在问题。如果图片没有文字描述,看不见图片的盲人用户就无法知道图片表达的是什么。色盲用户在识别设计元素(包括文字)方面也会存在问题,因为色盲用户所能识别的色彩不足以辨别所有的设计元素(包括背景色和页面颜色)。

所开发的网站,如果没有考虑到适应于屏幕发音阅读器(读屏软件, 如 JAWS)或 “非可视” 浏览器(或叫声音浏览器、读屏浏览器,如 MozBraille)。读屏浏览器是一个可以发音阅读出网站的浏览器,帮助有视觉障碍的用户访问网站。一个在可视浏览器(如 IE)上看起来良好的网站,在读屏浏览器下可能听起来非常糟糕。

帮助听障用户

听障用户在听觉上存在问题。用声音传达的信息无法被听障用户所理解,简单解决方法是提供另外途径的信息传达方式,而不仅仅是声音,例如用文字描述、用图片。

帮助残障用户(肢体伤残的用户)

如果你不是残障用户,你无法想象他们(残疾人)的网络体验。例如,你曾经试过不使用鼠标去访问网站吗?除非你很幸运的遇到一个无障碍访问良好的网站,否则你肯定觉得非常困难。残障用户经常无法使用鼠标,除非创建网站的导航和输入方式的需求中就考虑残障人士的需求,否则残障人士可能完全无法使用你的网站。

帮助认知和神经障碍用户

网站往往比较复杂,要想找到我们所想要的信息经常不太容易。如果网站设计的过于复杂、导航不一致、存在让人分心(抓狂)的重复性动画,情况会更加糟糕。这些设计元素会导致认知和神经有障碍的用户的使用问题,甚至会让这些用户完全无法使用网站。

残障人士之外(所有用户都能受益)

前面我们知道如果我们存在某方面残障,使用互联网是件困难的事情。然后,web 无障碍访问不仅仅帮助到残障人士,良好理解和遵循 Web 无障碍设计,可以让所有用户都受益、更好的服务用户。

  • 使用移动手机、Web-TV 的用户
  • 低带宽的用户
  • 在吵杂环境下使用网站的用户
  • 容易被 “屏幕眩光” 伤到眼睛的用户
  • 开车时的用户
  • 低文化水平的用户
  • 第二语言访问的用户(国外用户)
  • 不同学习方式和习惯的用户
  • 处理好 Web 无障碍访问问题也可以改善:

页面传输和网站更便于维护

  • 更优内容索引、内容搜索,提高搜索引擎的排名;

网站获得更好市场机会

让你的网站具有可及性还有其它原因。根据目前数据,在许多国家残疾人用户占到人口的 10%~20%,如果能吸收前面提到的残障人士成为你的网站的用户,可以提高你网站的市场占有率。

许多国家的老龄化人口都在增加,年龄的增大会带来更多的无障碍访问问题,包括视觉障碍、听觉障碍、记忆力下降等。如果你的网站能吸收老年人用户,也会大大提升你网站的市场占有率。

所以,无障碍访问是可以直接带来经济效益的。

无障碍 Web 标准

Web内容无障碍指南(WCAG)2.1概述-官方链接

摘要

WCAG 2.1提供了一系列的建议,目的是使Web内容对更广泛的用户群体更加易于访问。这包括视力、听力、运动能力、语言和认知能力受限的人士。遵循这些准则不仅可以提高网站的无障碍性,还能增强所有用户的体验。

背景

WCAG 2.1基于WCAG 2.0,并加入了新的成功标准以解决特定用户群体的需求。
这些准则是国际性的,旨在跨越不同的技术和平台。

适用范围

适用于台式机、笔记本、平板和移动设备上的Web内容。

主要原则

WCAG 2.1围绕四个核心原则构建,即:

可感知性:信息和用户界面组件必须以可感知的方式呈现。

  • 替代文本:为非文本内容提供文本替代,以便转换为大字体、盲文、语音等。
  • 时基媒体:为音频和视频内容提供替代,如字幕、音频描述和手语翻译。
  • 适应性:创建内容时,确保不同呈现方式下信息和结构不丢失。
  • 可辨别性:提高内容的可见性和听力清晰度,例如适当的颜色对比和文本间距。

可操作性:用户界面组件和导航必须可操作。

  • 键盘可访问:确保所有功能都可以通过键盘操作。
  • 充足的时间:为用户提供足够的时间来阅读和使用内容,避免突然的时限。
  • 癫痫和身体反应:避免设计可能引发癫痫或身体不适的内容。
  • 可导航性:提供帮助用户导航和定位的方法,如清晰的标题和链接目的。

可理解性:信息和用户界面操作必须是可理解的。

  • 可读性:使文本内容易于阅读和理解,包括语言和方言的使用。
  • 可预测性:让网页以可预见的方式呈现和操作,保持导航和标识的一致性。
  • 辅助输入:帮助用户避免和纠正错误,提供错误建议和预防机制。

鲁棒性:内容必须健壮,以被各种用户代理正确解释。

  • 兼容:使用标准编码技术,确保内容的兼容性和未来的可维护性。
  • 一致性:确保网站整体符合无障碍标准,提供一致性声明。

如何确保网站在不同浏览器和设备上都能提供良好的无障碍体验?

  1. 遵循WCAG准则:根据Web内容无障碍指南(WCAG),确保你的网站满足至少AA级标准。
  2. 使用语义化的HTML:使用适当的HTML标签来传达其含义,例如使用<header>, <nav>, <main>, <section>, <article>, <footer>等。
  3. 确保颜色对比度:确保文本和背景之间有足够的颜色对比,以满足视觉障碍用户的需求。
  4. 提供文本替代方案:为非文本内容(如图片、视频)提供替代文本(alt text)或字幕。
  5. 键盘可访问性:确保所有功能都可以通过键盘操作,避免使用仅限鼠标的交互。
  6. 避免自动播放媒体:不要让音频或视频内容自动播放,或者提供控制机制让用户可以暂停或停止。
  7. 提供足够的时间:为用户提供足够的时间来阅读和使用内容,避免突然的时限或自动提交表单。
  8. 确保导航可预测性:网站导航应保持一致,链接和按钮的行为应符合用户预期。
  9. 支持屏幕阅读器和其他辅助技术:使用适当的ARIA(Accessible Rich Internet Applications)属性来增强现有HTML的功能。
  10. 响应式设计:确保网站在不同大小的屏幕上都能正常显示和操作。
  11. 跨浏览器测试:在不同的浏览器(如Chrome、Firefox、Safari、Edge等)上测试网站的功能和布局。
  12. 跨设备测试:在各种设备上测试网站,包括桌面、平板和手机。
  13. 用户测试:邀请残障用户参与测试,收集他们的反馈并优化体验。
  14. 持续维护和更新:定期更新内容和代码,以适应新的Web标准和辅助技术。
  15. 提供反馈机制:允许用户报告无障碍问题,并确保有快速响应和修复的流程。
  16. 教育团队:确保开发团队了解无障碍最佳实践,并在设计和开发过程中考虑这些因素。
  17. 使用无障碍工具和插件:利用浏览器扩展和在线工具来检查和改善网站的无障碍性。
  18. 文档和指南:创建和维护无障碍开发和设计指南,确保所有团队成员遵循。

常用HTML标签的无障碍实践

根据WCAG 2.1快速参考指南,以下是一些常用HTML标签的无障碍写法、含义及示例:

<img> - 图像

  • 含义: 嵌入图片或图形内容。
  • 无障碍写法: 使用alt属性提供图像的文本描述。

示例

<img src="photo.jpg" alt="一位女士站在山顶上,欣赏日落">

<a> - 超链接

  • 含义: 定义一个超链接,用于从一个页面链接到另一个页面。
  • 无障碍写法: 确保链接文本(或通过aria-label属性)清晰表达链接目的。

示例

<a href="https://example.com" aria-label="访问示例网站的主页">主页</a>

<button> - 按钮

  • 含义: 定义一个可点击的按钮。
  • 无障碍写法: 使用aria-pressed属性表示按钮的状态(如果适用)。

示例

<button aria-pressed="false">切换</button>

<input> - 输入字段

  • 含义: 用于收集用户输入的表单字段。
  • 无障碍写法: 使用aria-invalid属性指示输入错误。

示例

<input type="text" aria-invalid="true" aria-describedby="error-message">
<span id="error-message">输入格式不正确。</span>

<textarea> - 文本区域

  • 含义: 定义一个多行的文本输入区域。
  • 无障碍写法: 确保文本区域大小可调整,以适应内容。

示例

<textarea rows="4" cols="50" aria-describedby="text-help"></textarea>
<div id="text-help">请输入您的评论。</div>

<select> - 下拉菜单

  • 含义: 创建下拉选择菜单。
  • 无障碍写法: 使用aria-labelledby属性引用下拉菜单的描述标签。

示例

<label id="country-label">选择国家:</label>
<select aria-labelledby="country-label"><option value="china">中国</option><option value="usa">美国</option>
</select>

<table> - 表格

  • 含义: 创建表格来展示数据。
  • 无障碍写法: 使用caption元素为表格提供标题,使用th元素和scope属性定义表头。

示例

<table><caption>员工信息表</caption><thead><tr><th scope="col">姓名</th><th scope="col">职位</th></tr></thead><tbody><tr><td>张三</td><td>工程师</td></tr></tbody>
</table>

<header> - 页眉

  • 含义: 表示文档或文档区段的页眉。
  • 无障碍写法: 包含导航或概览文档结构的元素。

示例

<header><h1>网站标题</h1><nav><ul><li><a href="#home">首页</a></li></ul></nav>
</header>

<footer> - 页脚

  • 含义: 表示文档或文档区段的页脚。
  • 无障碍写法: 包含版权信息、相关链接等。

示例

<footer><p>&copy; 2024 版权所有</p>
</footer>

<main> - 主要内容

  • 含义: 表示文档的主要内容区域。
  • 无障碍写法: 作为文档结构的主体,不应包含在其他<main>元素内。

示例

<main><article><h2>文章标题</h2><p>这里是文章内容。</p></article>
</main>

<article> - 文章

  • 含义: 表示独立的、自包含的网页内容。
  • 无障碍写法: 用于博客文章、新闻故事或论坛帖子等。

示例

<article><header><h2>独立内容示例</h2></header><p>这里是独立内容的主体。</p>
</article>

注意事项

  • 所有标签都应该使用语义化的方式,以提高内容的可访问性。
  • ARIA属性可以增强无障碍性,但它们不能替代正确的HTML结构。
  • 确保所有交互元素都可以通过键盘访问,并且状态变化能够通过屏幕阅读器通知给用户。

以上示例提供了一些基本的无障碍写法,但请记得,无障碍设计是一个广泛且深入的领域,需要根据具体情况进行更细致的设计和实现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/49591.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis 缓存

安装 安装 Redis 下载&#xff1a; Releases tporadowski/redis (github.com) winr ----services.msc-----将redis 设置为手动(只是学习&#xff0c;如果经常用可以设置为自动) 安装 redis-py 库 pip install redis-py Redis 和 StrictRedis redis-py 提供 Redis 和 Str…

Java高频面试题分享

文章目录 1. 策略模式怎么控制策略的选取1.1 追问&#xff1a;如果有100种策略呢&#xff1f;1.2 追问&#xff1a;什么情况下初始化Map 2. 什么是索引&#xff1f;什么时候用索引&#xff1f;2.1 追问&#xff1a;怎么判断系统什么时候用量比较少2.2 追问&#xff1a;如何实时…

C++多态的底层原理

目录 1.虚函数表 &#xff08;1&#xff09;虚函数表指针 &#xff08;2&#xff09;虚函数表 2.虚函数表的继承--重写&#xff08;覆盖&#xff09;的原理 3.观察虚表的方法 &#xff08;1&#xff09;内存观察 &#xff08;2&#xff09;打印虚表 虚表的地址 函数 传参…

SSM电子商务系统-计算机毕业设计源码68470

基于SSM框架的电子商务系统的设计与实现 摘 要 随着电子商务的迅猛发展和计算机信息技术的全面跃升&#xff0c;网上购物系统由于其迎合了人们诉求和期望而渗入社会生活各个层面和角落。本文设计并实现了一个基于SSM框架的电子商务系统。该系统旨在为用户提供一个舒适且快捷的…

Python基础——第一个Python程序

Python基础——第一个Python程序 一、编写和运行代码的工具1.1 为什么需要工具1.2 默认的交互式环境1.3 文本编辑神器 - Visual Studio Code1.4 专业的集成开发环境 - PyCharm 二、编写第一个Python程序2.1 在PyCharm中编写“Hello, World!”程序2.2 运行“Hello, World!”程序…

JAVA连接数据库(JDBC)

连接步骤 1.加载数据库驱动 Class.forName("com.mysql.cj.jdbc.Driver"); ​ 2、创建数据库连接 String url"jdbc:mysql://localhost:3306/数据库名?serverTimezoneGMT"; String username"root";//用户名 String passwd"密码"; Conn…

Python中的定时方法

1. 使用schedule模块 安装&#xff1a;pip install schedule schedule模块就像一个日程表&#xff0c;让你的Python程序按计划运行。看这个例子&#xff1a; import schedule import timedef job():print("定时任务执行啦&#xff01;")# 每天早上8点执行 schedule…

Windows 11+Visual Studio 2022 环境OpenCV+CUDA 12.5安装及踩坑笔记

周六日在家捣腾了一下&#xff0c;把过程记录下来。 前置条件 Visual Studio C 生成工具和本机显卡适配的CUDA与CUDA匹配的cuDNNPython 3NumPyOpenCV源代码以及对应版本的OpenCV-contrib模块源码CMake Visual Studio 下载Visual Studio&#xff08;我本机的是VS2022&#xf…

TCP/IP传输层协议

在 TCP/IP 协议栈中&#xff0c;传输层是负责端到端通信的关键层次。它提供了数据传输的可靠性、流量控制和错误检测等功能。传输层协议的主要目的是在通信双方之间建立、管理和终止连接&#xff0c;并确保数据的完整传输。主要的传输层协议包括 TCP 和 UDP。以下是对这些协议的…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 智能驾驶(200分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,支持题目在线评测,专栏文章质量平均 93 分 最新华为OD机试目录: …

搭建 PostgreSQL 流复制主从指南(适用于 CentOS 7.x)

PostgreSQL 流复制&#xff08;Streaming Replication&#xff09;是一个强大且高效的高可用性解决方案。它可以在主服务器和一个或多个从服务器之间实现数据的实时复制&#xff0c;从而提高系统的可用性和容错能力。本文将详细介绍如何在 CentOS 7.9 上搭建一个 PostgreSQL 流…

【Golang 面试基础题】每日 5 题(九)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/UWz06 &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏…

c/c++的内存管理(超详细)

一、c/c的内存分布 这是操作系统中对于内存的划分&#xff1a; 我们重点掌握以下几个区域即可&#xff1a; 1.栈 (调用函数会建立栈帧) 2.堆(动态开辟的空间) 3.数据段(静态区)&#xff1a;存放静态变量以及全局变量 4.代码段 (常量区) 先来看看一个题目&#xff1a; int…

蓝牙耳机百元之内怎么选?四款百元精品爆款蓝牙耳机盘点

在蓝牙耳机的海洋中&#xff0c;百元价位仿佛是一片神秘的绿洲&#xff0c;既诱人又充满未知&#xff0c;如何在众多选项中挑选出真正的精品呢&#xff1f;蓝牙耳机百元之内怎么选&#xff1f;这是许多消费者的共同疑问&#xff0c;带着这个疑问&#xff0c;作为蓝牙耳机发烧党…

为什么Spring不推荐@Autowired用于字段注入

背景 Spring是Java程序员常用的框架之一。官方从Spring 4.0开始不推荐使用Autowired进行字段注入。 Spring注入方式 基于构造器注入&#xff1a;在构造器上使用Autowired。 优点&#xff1a;可以声明字段为final&#xff0c;确保字段在构造时被初始化。 基于setter方法注入&…

【Python机器学习】朴素贝叶斯——条件概率

条件概率 假设现在有一个装了7块石头的罐子&#xff08;3块灰色&#xff0c;4块黑色&#xff09;&#xff0c;如果从中随机取出一块&#xff0c;灰色的可能性就是3/7&#xff0c;黑色的可能性是4/7。我们使用p(gray)来表示取到灰色石头的概率&#xff0c;其概率值可以通过灰色…

【SpringBoot】参数传递之RequestBody接收JSON数据

4.3.3 RequestBody接收Json数据 PostMapping(path "/save2") public String save2(RequestBody Student student){ String firstName student.getFirstName; String lastName student.getLastName; return firstName"" "lastName; }

1.3 双向链表定义及部分实现

1.定义 单链表的问题&#xff1a;找后继容易&#xff0c; 找前驱难 双向链表&#xff08; Double Linked List &#xff09; &#xff1a;指的是构成链表的每个结点中设立两个指针域&#xff1a; 一个指向其直接前趋的指针域 prior &#xff0c;一个指向其直接后继的指针域 …

Tent混沌人工蜂群与粒子群混合算法遇到问题,具体问题及解决方案如文。

&#x1f3c6;本文收录于《CSDN问答解惑-专业版》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收…

谷歌再被OpenAI截胡?训练数学AI拿下IMO银牌,不及SearchGPT放了空响..

昨夜谷歌振臂高呼&#xff1a;我们新的数学AI&#xff0c;能在IMO数学竞赛达到银牌水平&#xff01; 但就在谷歌发文的几个小时后&#xff0c;OpenAI就偷了谷歌的家&#xff1a; 发布新的搜索方式SearchGPT &#xff0c;剑指挑战谷歌的搜索引擎。 谷歌双模型并用攻克数学难题…