D
开发工具箱

WCAG 对比度:别让用户眯着眼才能看清你的按钮

编程转换 2026年7月9日 约 1 分钟阅读

一次”灰色小字看不清”的投诉

之前做了个后台,表单的辅助说明文字用了 #999 灰,背景是白色。上线后真有用户邮件反馈:“那段说明我得把脸凑到屏幕上看”。我第一反应是”你显示器调亮点啊”,后来用对比度工具一量——#999 对白底只有 2.85:1,连 WCAG AA 大文本的 3:1 都没到,普通文本要求的 4.5:1 更是差得远。

那次之后我养成了习惯:任何出现在界面上的文字,上线前先用对比度工具过一遍。本文把 WCAG 对比度这件事一次讲清。

对比度比值到底是什么

对比度不是”颜色差多大”,而是一个基于相对亮度的公式。WCAG 先把每个颜色转成 0–1 的相对亮度 L(考虑人眼对不同颜色的敏感度,绿色最亮、蓝色最暗),再算:

对比度 = (L亮 + 0.05) / (L暗 + 0.05)

比值越大越清晰。纯黑对纯白是 21:1(上限),而上面那个 #999 对白底只有 2.85:1。本工具会实时算出这个比值,并同时给出前景和背景各自的相对亮度,方便你理解”差在哪”。

AA 和 AAA:两套及格线

WCAG 2.1 把达标分了两级,每级又按文本大小分门槛:

等级普通文本(< 18pt 或 < 14pt 粗体)大文本(≥ 18pt 或 ≥ 14pt 粗体)
AA(最低合规)≥ 4.5:1≥ 3:1
AAA(增强合规)≥ 7:1≥ 4.5:1

几个要点:

  • 大文本门槛更低,因为它本来就大,稍微糊一点也认得出。
  • AA 是大多数法规的底线(比如欧盟 EN 301 549、美国 Section 508 基本都按 AA 要求)。AAA 更严格但很多场景做不到,属于”加分项”。
  • 本工具会用 ✓/✗ 徽标逐项标出:AA 普通文本、AA 大文本、AAA 普通文本、AAA 大文本,一目了然。

别漏了”非文本对比”

很多人只检查文字,但 WCAG 2.1 的 1.4.11 非文本对比 要求:图标、边框、输入框轮廓、图表线条这类,和相邻颜色的对比度也要 ≥ 3:1。比如:

  • 一个”提交”按钮的边框如果和背景几乎同色,键盘聚焦时用户可能根本看不到焦点在哪。
  • 表单输入框的 1px 灰边,对白底可能只有 2:1,不达标。

本工具也内置了”非文本对比 ≥ 3:1”的判定,专门覆盖这类元素。

配色不达标,怎么救

最直接的办法是调整较暗那一方的亮度(保持色相和饱和度,视觉上还是同一种颜色)。本工具提供「自动调整」按钮:

  1. 选目标——AA 普通文本(4.5)、大文本/非文本(3.0)、或 AAA 普通文本(7.0)。
  2. 工具会在固定另一方颜色的前提下,对较暗一方做亮度二分搜索,找到刚好达标的最小值。
  3. 调整后给出新的 HEX 和达标后的比值,复制即可用。

注意:自动调整只在”保留色相”的前提下工作。如果当前色相本身怎么调都达不到(比如深蓝对深红),那就得换另一方颜色,工具也会提示你。

常见速查

前景 / 背景对比度结论
#000 / #FFF21:1满分,随便用
#767676 / #FFF4.54:1刚好过 AA 普通文本
#999999 / #FFF2.85:1不及格,普通文本不可用
#0050B3(蓝) / #FFF7.4:1过 AAA 普通文本
#FFD700(金) / #FFF1.2:1灾难级,千万别用

一个实用经验值:正文文字想稳过 AA,灰底上的灰至少要 #767676 或更深;白底上的灰至少 #595959 才稳

常见问题

Q:为什么我眼睛看着还行,工具却说不达标? 人眼在不同环境光、不同设备上差异很大,尤其显示器偏亮或老年人、低视力用户根本看不清。WCAG 是给”最差情况”兜底的标准,别靠自己眼睛判断。

Q:大文本具体指多大? WCAG 定义:≥ 18pt(约 24px)的常规字,或 ≥ 14pt(约 18.66px)的粗体。低于这个尺寸一律按”普通文本”要求 4.5:1。

Q:半透明文字(rgba)怎么算? 先把半透明颜色和它下方的背景混合成一个实色,再算混合色与真正背景的对比度。本工具输入的是实色,遇到半透明请先在脑中(或借助颜色转换工具)合成后再测。

Q:深色模式下要不要重新测? 必须。同一段文字在浅色和深色背景上的对比度完全不同,两套主题要分别达标。

Q:图片里的文字、视频字幕也要管吗? 要。WCAG 对图片中的文字、字幕也建议达到 4.5:1(字幕至少 3:1)。纯装饰性文字(无意义)可以不管。

Q:对比度达标了是不是就无障碍了? 对比度只是无障碍的一小块(WCAG 1.4.3)。还有颜色不能是唯一信息载体(别只用红绿区分)、键盘可达、屏幕阅读器友好等,需综合考虑。

想把手头的 HEX/RGB 互相转换或挑一组好看又合规的配色,可以配合 颜色转换CSS 渐变生成器 一起用。