什么是 WCAG 颜色对比度?
对比度用来衡量两种颜色之间的区分程度,通常指文字与其背景之间的反差。Web 内容无障碍指南(WCAG 2.x)以这一比值设定最低门槛,确保低视力或存在色觉障碍的用户也能顺畅阅读内容。对比度的取值范围从 1:1(两种颜色完全相同)一直到 21:1(纯黑配纯白)。WCAG 是国际通行的网页无障碍标准,国内不少政府与企业网站的无障碍要求也参照该标准制定。
如何使用本计算器
分别填入前景色(文字颜色)和背景色的十六进制值,例如 #1a73e8,也支持 #fff 这样的缩写写法。计算器会对每种颜色进行线性化处理,算出其相对亮度,最终给出对比度,并逐一对照各项 WCAG 门槛,标明通过或未通过。
计算公式详解
对比度的公式为 (L1 + 0.05) / (L2 + 0.05),其中 L1 是较亮颜色的相对亮度,L2 是较暗颜色的相对亮度。
$$\text{Ratio} = \frac{L_1 + 0.05}{L_2 + 0.05}$$$$\text{where}\quad \left\{ \begin{aligned} L_1 &= \max(L_{\text{Foreground}},\, L_{\text{Background}}) \\ L_2 &= \min(L_{\text{Foreground}},\, L_{\text{Background}}) \end{aligned} \right.$$相对亮度的计算方法是:先将每个 sRGB 通道转换为 0–1 之间的数值,再进行线性化(数值不超过 0.03928 的通道除以 12.92,更亮的通道则套用 \(\left((c+0.055)/1.055\right)^{2.4}\)),最后按 \(0.2126\cdot R + 0.7152\cdot G + 0.0722\cdot B\) 加权合成。
$$c_{lin} = \begin{cases} \dfrac{c}{12.92} & c \le 0.03928 \\[0.4em] \left(\dfrac{c+0.055}{1.055}\right)^{2.4} & c > 0.03928 \end{cases}$$$$L = 0.2126\,R_{lin} + 0.7152\,G_{lin} + 0.0722\,B_{lin}$$公式中的 0.05 既能避免除零,又能模拟屏幕环境光带来的轻微泛光。
实例演算
以白色背景(#FFFFFF)上的黑色文字(#000000)为例:黑色的亮度为 0,白色的亮度为 1。代入公式得 $$\frac{1 + 0.05}{0 + 0.05} = \frac{1.05}{0.05} = 21:1$$——这是理论上的最高值,轻松通过所有级别。
常见问题
我需要多大的对比度? WCAG AA 级要求正文达到 4.5:1,大号文字达到 3:1(大号指 ≥18pt,或 14pt 加粗)。AAA 级则分别要求 7:1 和 4.5:1。
颜色的先后顺序会影响结果吗? 不会。公式始终用较亮颜色的亮度去除以较暗颜色的亮度,因此前景色与背景色互换后,对比度保持不变。
为什么不能直接用明暗度来判断? 人眼对颜色的感知是非线性的,且对绿色更敏感。正因如此,亮度计算才采用了伽马校正和各通道专属的加权系数,而不是简单地取平均值。