颜色对比度检查器

对比度比率
大标题示例
正文示例。敏捷的棕色狐狸跳过了懒狗。
结果

输入前景色和背景色,检查器会返回 WCAG 对比度(1:1 到 21:1),并根据 WCAG 2.1 AA 和 AAA 阈值,对普通文本、大文本和非文本元素给出通过/未通过判定。其底层使用 WCAG 亮度公式,计算虽然简单,但对无障碍至关重要。通过微调明度来修复未通过项,直到对比度超过你需要的阈值。

对比度是如何计算的

  1. 1

    输入两种颜色

    两种颜色均使用 3 位或 6 位 HEX。每种颜色都配有取色器。

  2. 2

    分别计算相对亮度

    L = 0.2126·R + 0.7152·G + 0.0722·B,其中每个通道都从 sRGB 线性化。

  3. 3

    对比度

    (L_较亮 + 0.05) / (L_较暗 + 0.05)。比值介于 1:1 和 21:1 之间。

  4. 4

    通过/未通过徽章

    AA(普通文本 4.5:1,大文本/UI 3:1),AAA(普通文本 7:1,大文本 4.5:1)。大文本 = ≥18pt 常规字重或 ≥14pt 粗体。

WCAG 对比度阈值

内容类型 AA 阈值 AAA 阈值
普通文本 4.5:1 7:1
大文本(≥18pt 常规或 ≥14pt 粗体) 3:1 4.5:1
非文本(UI 组件、焦点环) 3:1 -
偶然文本(装饰性、禁用、徽标) 豁免 豁免

“大文本”指 18pt+ 常规字重(CSS 中约 24px)或 14pt+ 粗体(约 19px 粗体)。

对比度示例

颜色对 对比度 AA 普通 AA 大 AAA 普通
白底黑字 21:1 通过 通过 通过
白底 #333 12.6:1 通过 通过 通过
白底 #666 5.7:1 通过 通过 未通过
白底 #888 3.5:1 未通过 通过 未通过
白底 #AAA 2.3:1 未通过 未通过 未通过
#1976D2 底白字(Material blue 700) 4.6:1 未通过 通过 未通过
#2196F3 底白字(Material blue 500) 3.1:1 未通过(普通) 通过 未通过

常见的无障碍陷阱

  • 白底灰色正文,颜色为 #999 或更浅时无法通过 AA。白底正文请使用 #767676 或更深的颜色。
  • 灰底蓝色链接:由于两种颜色都处于中等亮度,常常无法通过。
  • 品牌色上的白色文字:较深色调(≥ 4.5:1)可通过,中等色调的品牌色则无法通过。请使用更大的文字或更深的品牌色。
  • 占位符文本为了“提示“通常对比度较低,但如果用户需要阅读占位符,WCAG 依然适用。
  • 禁用状态:WCAG 2.2 要求禁用文本与控件背景的对比度达到 3:1,除非该状态本身已通过其他方式传达。

WCAG 没有告诉你的

  • WCAG 2.x 使用的是 1988 年的公式。现代的 APCA(高级感知对比度算法)能更好地反映实际可读性,但尚非法定基准。请将数值略高于 WCAG 最低要求,以兼顾 APCA 和边界情况。
  • 对比度并非无障碍的唯一维度。如果字体只有 9px、行距过窄,或者用红绿色传达含义,21:1 的对比度也毫无意义。

改善未通过的颜色对

  • 深色背景上用更亮的前景,浅色背景上用更暗的前景。
  • 增大字号或字重,大文本的阈值更低。
  • 在图片上的文字后面添加背景(叠加层、渐变)。
  • 绝不要通过淡化到仍然无法通过的灰色来修复对比度,请一直调整到达到 AA。

每次调整后都要重新检查,工具会实时重新计算对比度,明度的一点小变化就可能很快改变判定结果。

常见问题

AA 是大多数司法管辖区的法定基准(美国 Section 508、欧盟 EN 301 549),也是大多数审计工具标记的标准。AAA 是进阶目标,仅在特定无障碍场景(面向低视力用户的教育内容)中强制要求。以 AA 为目标,把 AAA 当作加分项。

不支持,它只接受不透明的 HEX 颜色,3 位或 6 位。请先将 RGB 或 HSL 转换为 HEX,或使用取色器,它输出的永远是 HEX。

WCAG 2.1 SC 1.4.11 要求非文本 UI 组件和图形对象的对比度达到 3:1。这适用于焦点指示器、输入框边框、纯图标按钮以及各种状态(悬停、激活)。默认状态和焦点状态都要检查。

请分别测试每种模式,浅色主题和深色主题的对比度是相互独立的。许多在浅色模式下通过的配色,在相同相对明度的深色模式下会失败。

相关工具