无障碍
无障碍的应用人人都能用,包括依赖屏幕阅读器、纯键盘操作等辅助技术的人。这些实践基于 Web 内容无障碍指南(WCAG);遵循它们不保证完全无障碍,但覆盖了对应用用户影响最大的问题。
用 Lighthouse、Accessibility Insights for Web 或 WAVE 等工具测试你的应用。
支持键盘操作
有视觉或运动障碍的用户往往完全用键盘操作:
- 所有链接、按钮、菜单和表单控件都必须能用
Tab/Shift+Tab、Enter、Space触达和操作。 - 保持焦点指示器在活动元素上可见——不要删掉 outline 而不提供替代样式。
- 不依赖悬停(hover)来展示功能。
- 不强制跳转焦点:避免
autofocus和0、-1以外的tabindex值;元素获得焦点时不要切换上下文。 - 模态框和抽屉:打开时焦点移入对话框,键盘导航保持在框内,支持
Esc关闭并把焦点还给触发元素。用role="dialog"标识。
用语义化结构组织页面
屏幕阅读器按结构导航,HTML 要按语义使用:
- 在
html元素上设置lang属性,让内容以正确的语言朗读。 - 标题标签(
h1–h6)按逻辑顺序使用——每页一个h1、不跳级、不为了样式用标题。 - 导航用
a、页面内动作用button;链接文字单独读也要有意义。 - 表格数据用
table配th和scope属性。 - 不禁用缩放:viewport meta 标签里避免
maximum-scale和user-scalable=no。
给每个表单字段加标签
- 每个输入框都要有标签——可见的
<label for>最好;放不下可见标签时用aria-label。 - 必填项加
required属性;浏览器能代填的字段用autocomplete。 - 校验失败时,焦点移到错误信息上、清晰描述问题,并用
aria-describedby把信息关联到字段。错误和成功提示用aria-live播报给屏幕阅读器。
保证颜色对比度
不要只靠颜色传递信息,文本对比度保持在 WCAG 1.4.3 Contrast(Minimum,Level AA)规定的水平——普通文本 4.5:1。用对比度检测工具检查你的配色。
给图片和媒体加描述
- 每个
img都要有alt属性:有意义的图片写描述文字,装饰性图片用空的alt=""让屏幕阅读器跳过。 - 动画尊重用户的
prefers-reduced-motion设置。 - 自动播放的内容——轮播、视频——必须可暂停,自动播放的视频必须静音。
触控目标留足尺寸
主要触控目标至少 44 × 44 像素——完整的移动端指引见移动端适配。