可访问性测试:color-contrast 与焦点
检查颜色对比度,并验证焦点指示器是否符合 WCAG 可访问性标准。
可访问性测试:color-contrast 与焦点 是 CoddyKit 上的免费 CSS Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 CSS Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 CSS Academy 课程共包含 4 节课。
CSS 为什么会影响无障碍性
CSS 会控制颜色对比度、焦点指示器的可见性、元素可见性(display:none 会将元素从无障碍树中移除)以及阅读顺序(通过 flexbox 的 order 进行视觉重排,而不是按照 DOM 顺序)。CSS 选择会直接影响残障用户能否使用界面。
WCAG 颜色对比度要求
WCAG 2.1 AA 要求普通文本的对比度至少为 4.5:1,大号文本的对比度至少为 3:1(18px 以上的粗体或 24px 以上的常规字体)。AAA 分别要求 7:1 和 4.5:1。这些比例比较前景文字颜色的亮度与背景颜色的亮度。
在 DevTools 中检查对比度
在 DevTools 中点击任意文本元素 → 样式面板。颜色样本旁会显示对比度比例标记。勾号表示通过;X 表示失败。颜色选择器会在颜色渐变中显示 AA/AAA 阈值线。
自动化对比度测试
axe-core、Lighthouse 和 Pa11y 会自动审核所有文本元素的对比度比例。在开发环境中使用 @axe-core/react 运行 axe-core,可以在开发期间实时获取浏览器控制台中的对比度警告。
焦点指示器
在 :focus 上使用 CSS outline: none 或 outline: 0 会移除浏览器默认的焦点环,使键盘导航变得不可见。这是严重的无障碍性问题。请使用自定义的可见焦点样式来替代,而不是完全移除焦点指示器。
<button autofocus>Keyboard-focused button</button>
:focus-visible 与 :focus
:focus 会应用于所有焦点事件,包括鼠标点击(这会在点击时显示焦点环,而设计人员通常不喜欢这样)。:focus-visible 只会在浏览器判断正在使用键盘导航时应用,从而为键盘用户显示焦点环,同时不会在鼠标点击时显示。
WCAG 焦点指示器要求
WCAG 2.2 引入了成功准则 2.4.11(焦点外观 AA):焦点指示器与相邻颜色之间的对比度至少必须达到 3:1,并覆盖组件的整个周边。自定义焦点样式不仅要存在,还必须满足这些要求。
强制颜色模式
Windows 高对比度模式会使用用户定义的系统颜色覆盖 CSS 颜色。使用 @media (forced-colors: active) 提供能够在高对比度模式下正常工作的替代样式。请通过 Windows 设置 → 辅助功能 → 高对比度进行测试。
不应只使用颜色作为指示
WCAG 1.4.1 禁止仅使用颜色传达信息。只将错误状态变成红色就不符合这一准则。请将颜色与图标、文本标签、图案或下划线结合使用,确保始终存在不依赖颜色的信息。
文本缩放和间距
WCAG 1.4.4 要求文本可以放大到 200%,且不损失内容。WCAG 1.4.12 要求覆盖文本间距设置(增大的字母间距、行高)时不会破坏布局。请对排版使用相对单位(rem、em),以同时满足这两项要求。
测试工具套件
全面的无障碍 CSS 测试方案包括:用于开发的 axe DevTools 浏览器扩展、用于自动化流水线检查的 Lighthouse CI、用于命令行页面审核的 Pa11y,以及使用 Tab/Shift+Tab 进行手动键盘导航测试,以验证焦点指示器的可见性和顺序。
知识检查
为什么 outline: none 绝不能成为元素 :focus 状态的最终 CSS?
摘要
CSS 无障碍测试涵盖颜色对比度比例(AA 最低 4.5:1)、使用 :focus-visible 实现可见且符合 WCAG 2.2 的焦点指示器、避免仅用颜色传递信息、支持 forced-colors 模式,以及使用相对字体排版单位来满足缩放要求。自动化工具结合手动键盘测试,确保全面覆盖。
常见问题解答
「可访问性测试:color-contrast 与焦点」课时是免费的吗?
是的 — 「可访问性测试:color-contrast 与焦点」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 CSS Academy 课程的其余内容,请升级到 CoddyKit PRO。 CSS Academy 课程共包含 4 节课。
「可访问性测试:color-contrast 与焦点」这节课中我会学到什么?
检查颜色对比度,并验证焦点指示器是否符合 WCAG 可访问性标准。 你通过在浏览器中直接运行的动手代码来练习 CSS Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 CSS Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 CSS Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「可访问性测试:color-contrast 与焦点」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 CSS Academy 课中编写并运行代码吗?
能。每节 CSS Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 视觉回归测试概念
- 用于 Storybook 的 Percy 与 Chromatic
- 使用 Jest 进行 CSS 单元测试
- 可访问性测试:color-contrast 与焦点