网页无障碍(a11y)指南:让网站对所有人可用
网页无障碍(Accessibility,简称 a11y)确保无论用户是否有视觉、听觉、运动或认知障碍,都能正常访问和使用你的网站。
WCAG 标准概述
WCAG(Web Content Accessibility Guidelines)是国际公认的网页无障碍标准,分为三个等级:
| 等级 | 要求 | 目标 |
|---|---|---|
| A | 最低 | 必须满足,否则部分用户无法访问 |
| AA | 中等 | 大多数网站应达到的标准 |
| AAA | 最高 | 特定场景下的最高标准 |
10 个关键无障碍实践
1. 为图片添加替代文本
<!-- 好的做法 -->
<img src="chart.png" alt="2026 年各季度销售额增长趋势图">
<!-- 装饰性图片 -->
<img src="decoration.png" alt="" role="presentation">
2. 使用语义化 HTML
<!-- 不好的做法 -->
<div class="nav">...</div>
<div class="main">...</div>
<!-- 好的做法 -->
<nav>...</nav>
<main>...</main>
3. 确保足够的颜色对比度
- 普通文本:对比度 ≥ 4.5:1(AA)/ ≥ 7:1(AAA)
- 大文本(≥18px 粗体或 ≥24px):对比度 ≥ 3:1
- 使用 WebAIM Contrast Checker 测试
4. 支持键盘导航
/* 为焦点状态提供可见指示 */
:focus-visible {
outline: 2px solid #4F46E5;
outline-offset: 2px;
}
5. 添加表单标签
<label for="email">邮箱地址</label>
<input type="email" id="email" name="email" required>
<!-- 或使用 aria-label -->
<input type="search" aria-label="搜索文章">
6. 管理焦点顺序
确保 Tab 键导航顺序与视觉顺序一致。避免使用正数的 tabindex。
7. 添加跳过导航链接
<!-- 页面第一个可聚焦元素 -->
<a href="#main" class="skip-link">跳到主要内容</a>
8. 使用 ARIA 属性
<div role="alert" aria-live="polite">
表单提交成功
</div>
<button aria-expanded="false" aria-controls="menu">
菜单
</button>
9. 确保文本可缩放
使用相对单位(rem/em)而非固定单位(px)设置字体大小。
10. 提供清晰的错误提示
<div role="alert">
<ul>
<li>邮箱地址格式不正确</li>
<li>密码至少需要 8 个字符</li>
</ul>
</div>
测试工具
| 工具 | 类型 | 用途 |
|---|---|---|
| axe DevTools | 浏览器扩展 | 自动扫描无障碍问题 |
| Lighthouse | Chrome DevTools | 生成无障碍审计报告 |
| WAVE | 浏览器扩展 | 可视化展示无障碍问题 |
| NVDA/JAWS | 屏幕阅读器 | 模拟视障用户访问 |
| Colour Contrast Analyser | 桌面应用 | 测试颜色对比度 |
16IDC 观察
网页无障碍不是「可选增强」,而是体现网站质量的重要维度。从项目开始就将无障碍纳入开发流程,比后期修复要省力得多。关注无障碍不仅扩大了你的潜在用户群,还能提升整体代码质量和 SEO 表现。