对比度检测工具用来算两个颜色之间的WCAG对比度,输入前景色和背景色,立刻给出比值和AA/AAA是否达标。WCAG 2.1规定:正文文本AA要求≥4.5:1,AAA要求≥7:1;18pt(约24px)或14pt粗体的大文本AA只要≥3:1,AAA要求≥4.5:1。UI组件和图形边界AA要求≥3:1。比如你做一张深灰#767676文字配白底#FFFFFF的海报,肉眼觉得还行,一测只有4.54:1,AA刚好过线,但换成#777777就掉到4.48:1不达标。改稿、做无障碍自查、给客户交付前都该跑一遍。
| 对比维度 | 本工具 | 手工/替代做法 |
|---|---|---|
| 计算耗时 | 输入两个色值后即时出结果,约 0.1 秒 | 手算需先做 3 次伽马校正再代入公式,熟练也要 3-5 分钟 |
| 精度 | 按 WCAG 2.1 公式保留两位小数,如 4.54:1 | 用计算器易在 0.03928 阈值和 2.4 指数上出错,误差可达 ±0.3 |
| 标准覆盖 | 同时给出 AA 4.5:1、AAA 7:1、大文本 3:1 三档判定 | 需自己记 4 组阈值,容易把大文本 3:1 和 UI 3:1 混用 |
| 隐私 | 颜色值只在浏览器内存里算,不发请求 | 在线取色网站常把色值传到服务端,企业内网色值可能外泄 |
WCAG 用的是相对亮度公式:先把每个 sRGB 通道除以 255,若值≤0.03928 则除以 12.92,否则按 ((v+0.055)/1.055)^2.4 做伽马校正;然后 L=0.2126R+0.7152G+0.0722B。对比度=(L1+0.05)/(L2+0.05),L1 是较亮的一方。纯黑#000与纯白#FFF的比值是21:1,这是理论上限。
WCAG 2.1 里正文文本 AA 是 4.5:1,AAA 是 7:1;大文本(≥18pt,或≥14pt 且粗体)AA 是 3:1,AAA 是 4.5:1。非文本内容如按钮边框、图标、图表线条,AA 要求 3:1。AAA 不是必须项,但政府、金融、医疗类项目常按 AAA 验收。
4.5:1 是底线不是舒适线。字号小于 12px、字重 300 以下、屏幕反光、投影仪偏色时,4.5:1 仍可能吃力。经验上正文尽量做到 7:1 以上,小字或浅色背景上建议 10:1。另外对比度只管明度差,红绿同亮度时比值可能达标但色盲用户仍分不清,需配合 color-blind-test 检查。
WCAG 公式只接受不透明色。如果文字是 rgba(0,0,0,0.6) 叠在白底上,要先合成:结果通道 = 0.6×0 + 0.4×255 = 102,即 #666666,再拿 #666666 和 #FFFFFF 去算,比值约 5.74:1。背景半透明同理,先和下层颜色合成,取最不利的合成结果来测。
WCAG 定义大文本为 18pt(约 24px)及以上,或 14pt(约 18.66px)及以上且字重≥700。中文没有粗体传统,很多字体加粗后笔画变化小,建议中文按 24px 以上才享受 3:1 的宽松标准。刚好 18px 加粗的按钮文字,严格说仍按 4.5:1 卡。
不能。相对亮度 L 的范围是 0(纯黑)到 1(纯白),代入公式 (1+0.05)/(0+0.05)=21,所以 21:1 是上限。任何工具报出大于 21 的比值都是算错了。反过来,同色对比是 1:1,比如 #FF0000 配 #FF0000,此时文字完全不可见。
本工具按 WCAG 2.1 的相对亮度公式计算,输入支持 HEX、RGB、HSL,输出保留两位小数。半透明色请先自行合成再测。对比度只反映明度差,不检查色盲可辨性、字号可读性和动态内容,正式无障碍验收还需结合屏幕阅读器实测。所有计算在浏览器本地完成,色值不上传服务器,关掉页面即清空。