目录
1. 什么是网页无障碍?
网页无障碍(简称 a11y,来自 "accessibility" 中间有 11 个字母)是指设计和开发网站,使所有人都能使用,无论他们是否有身体或认知障碍。
无障碍设计面向的用户群体包括:
- 视觉障碍用户 — 使用屏幕阅读器(Screen Reader)来听取网页内容
- 听力障碍用户 — 需要视频/音频的字幕或文字记录
- 运动障碍用户 — 使用键盘或辅助设备代替鼠标进行操作
- 认知或学习障碍用户 — 需要清晰简单的内容和一致的布局
- 色盲用户 — 需要足够的色彩对比度和非颜色视觉提示
2. 为什么无障碍如此重要
无障碍不只是"做好事"——它有明确的商业和技术价值:
| 维度 | 原因 |
|---|---|
| 法律合规 | 多个国家有无障碍法律:ADA(美国)、EN 301 549(欧盟)、平等法(英国)等 |
| SEO 优化 | 无障碍网站使用良好的语义化 HTML,搜索引擎更容易理解内容 |
| 扩大用户群 | 覆盖额外 15-16% 有残疾的潜在用户群体 |
| 提升整体体验 | 无障碍设计对所有人都有益——老年人、手机用户、强光环境用户 |
| 品牌形象 | 包容性品牌越来越受到消费者和投资者的认可 |
3. WCAG 2.2 国际标准
WCAG(Web Content Accessibility Guidelines,网页内容无障碍指南)是 W3C 发布的网页无障碍国际标准。当前版本为 2.2,于 2023 年 10 月发布。
三个合规级别
| 级别 | 含义 | 适用范围 |
|---|---|---|
| A 级 | 最低要求——基本可用性的基础 | 所有网站 |
| AA 级 | 行业标准——大多数无障碍法律要求的级别 | 政府、企业、电商 |
| AAA 级 | 最高级别——难以在全站 100% 实现 | 专业服务 |
4. POUR 四大原则
WCAG 围绕四个核心原则组织,称为 POUR:
P — 可感知(Perceivable)
所有内容必须能以用户可感知的方式呈现。例如:
- 图片必须有
alt属性描述其含义 - 视频必须有字幕或文字记录
- 内容不能仅依靠颜色传达信息
O — 可操作(Operable)
所有功能必须可通过任何输入方式操作。例如:
- 所有交互元素必须支持键盘访问
- 内容闪烁频率不超过每秒 3 次(避免诱发癫痫)
- 提供"跳至主要内容"链接,方便键盘用户
U — 可理解(Understandable)
内容和功能必须易于理解。例如:
- 在
<html>标签上用lang属性声明页面语言 - 表单错误必须清楚描述并提供修正建议
- 所有页面的导航结构保持一致
R — 健壮性(Robust)
内容必须能与当前及未来的辅助技术可靠配合。例如:
- HTML 必须符合规范——标签正确开闭
- 正确且适度地使用 ARIA 属性
- 避免使用屏幕阅读器不支持的废弃 HTML 元素
5. 最常见的无障碍问题
WebAIM 2024 年百万网站报告分析了 100 万个网站,发现以下 6 大常见问题:
| 排名 | 问题 | 影响网站比例 |
|---|---|---|
| 1 | 色彩对比度不足 | 80.9% |
| 2 | 图片缺少 Alt 文本 | 54.5% |
| 3 | 表单输入缺少标签 | 48.6% |
| 4 | 空链接(无可访问名称) | 44.6% |
| 5 | 缺少文档语言声明 | 17.1% |
| 6 | 空按钮(无文本) | 28.2% |
6. 视觉障碍用户的无障碍设计
视觉障碍用户依赖屏幕阅读器——将网页内容大声朗读的软件。常见工具有 NVDA、JAWS(Windows)、VoiceOver(macOS/iOS)和 TalkBack(Android)。
编写有效的 Alt 文本
- 有意义的图片:描述图片传达的信息,而非仅描述外观
- 装饰性图片:使用
alt=""让屏幕阅读器跳过 - 含文字的图片:Alt 文本中必须包含该文字内容
<!-- ✅ 正确 --> <img src="graph.jpg" alt="2026年1-6月销售额折线图,增长35%"> <!-- ❌ 错误 --> <img src="graph.jpg" alt="图表"> <img src="banner.jpg"> <!-- 完全缺少 alt 属性 -->
色彩对比度要求
- AA 级:普通文本 ≥ 4.5:1 · 大文本(≥18pt 或 ≥14pt 粗体)≥ 3:1
- AAA 级:普通文本 ≥ 7:1 · 大文本 ≥ 4.5:1
7. 键盘导航与焦点管理
运动障碍用户通常完全依靠键盘操作网站。您网站上的每个交互元素都必须仅通过键盘即可访问和操作。
基本键盘快捷键
- Tab — 向前移动焦点
- Shift + Tab — 向后移动焦点
- Enter / Space — 激活按钮/链接
- 方向键 — 在菜单、下拉框、滑块中导航
- Esc — 关闭对话框和下拉菜单
可见的焦点指示器
WCAG 2.2 要求聚焦元素必须有清晰可见的指示器。切勿在没有替代方案的情况下移除焦点样式:
/* ❌ 不要这样做 */
*:focus { outline: none; }
/* ✅ 改为这样 */
*:focus-visible {
outline: 3px solid #059669;
outline-offset: 2px;
}
8. 语义化 HTML 与 ARIA 属性
语义化 HTML 是指使用具有内在含义的 HTML 元素,而非用 <div> 和 <span> 实现一切。屏幕阅读器能正确识别和朗读语义化元素。
| 替换 | 使用 | 含义 |
|---|---|---|
<div class="header"> | <header> | 页面或章节标题区 |
<div class="nav"> | <nav> | 导航区域 |
<div class="content"> | <main> | 页面主要内容 |
<div class="article"> | <article> | 独立的内容单元 |
<div class="footer"> | <footer> | 页脚区域 |
<div class="button"> | <button> | 可交互按钮 |
ARIA 属性
ARIA(Accessible Rich Internet Applications)提供额外属性,向辅助技术传达角色、状态和属性信息。仅在语义化 HTML 不够用时使用:
<!-- 描述图标按钮的功能 --> <button aria-label="关闭对话框">✕</button> <!-- 指示展开/折叠状态 --> <button aria-expanded="false" aria-controls="dropdown">菜单</button> <!-- 动态提醒区域 --> <div role="alert" aria-live="assertive">错误:请重试。</div>
9. 免费无障碍测试工具
| 工具 | 类型 | 检测内容 |
|---|---|---|
| axe DevTools | 浏览器扩展 | 自动化 WCAG 扫描并提供修复建议 |
| Lighthouse | 内置于 Chrome DevTools | 无障碍评分及详细建议 |
| WAVE | 扩展/在线工具 | 可视化叠加层显示无障碍错误 |
| Color Contrast Analyzer | 桌面应用 | 像素级色彩对比度检查 |
| NVDA | 免费屏幕阅读器(Windows) | 模拟视障用户的真实体验 |
| 手动 Tab 测试 | 键盘 | 验证所有交互元素均可通过键盘访问 |
10. 总结与入门步骤
无障碍快速修复清单
从这 6 个高影响、低难度的修复开始:
- 为每张有意义的图片添加描述性
alt文本 - 检查并修复色彩对比度,达到 4.5:1(AA 级)
- 为每个表单输入框添加
<label>标签 - 为每个链接和按钮提供描述性文本名称
- 在
<html>标签上添加lang="zh-CN" - 通过 Tab 键浏览整个网站,测试键盘导航
然后逐步深化:使用语义化 HTML、ARIA 属性,并使用真实屏幕阅读器进行测试。