需用工具验证对比度是否达标,WCAG 2.1 要求普通文字≥4.5:1、大号文字≥3:1;可借助 WebAIM 工具、VS Code 插件或 Chrome DevTools,并注意色值陷阱与设备实际显示效果。

怎么判断当前 CSS 颜色组合是否可读
浏览器不会报错,但 WCAG 2.1 要求文本与背景的对比度至少为 4.5:1(普通文字)或 3:1(大号文字)。直接看 rgb(240, 240, 240) 和 rgb(50, 50, 50) 并不能直观判断——得算。可用在线工具如 WebAIM Contrast Checker,或在 VS Code 安装 “Color Highlight” 插件实时显示对比度数值。
常见陷阱:#eee 和 #333 看似灰度分明,实际对比度仅约 3.7:1,不满足 AA 标准;而 rgb(255, 255, 255) 与 rgb(33, 33, 33) 才真正达标(≈ 14:1)。
用 CSS color-mix() 快速调高对比度(现代浏览器)
color-mix() 可以在声明时动态增强对比:比如把浅灰文字“拉向黑色”,同时保持语义不变。
- 把
color: rgb(180, 180, 180)混入 20% 黑色:color: color-mix(in srgb, rgb(180 180 180) 80%, black 20%) - 背景太亮?用
background-color: color-mix(in srgb, white 70%, #222 30%)微调灰度,避免纯白刺眼 - 注意:Safari 16.4+、Chrome 111+、Firefox 119+ 支持;旧版需 fallback 到预计算好的高对比值
手动换算 RGB 时避开“等灰度陷阱”
人眼对绿色通道最敏感,所以同等数值的 rgb(100, 100, 100) 和 rgb(80, 100, 80),后者其实更易读——绿通道没被削弱。别只调 R/G/B 三个数一致。
立即学习“前端免费学习笔记(深入)”;
- 深色背景配字:优先降低 G 值(如
rgb(255, 240, 240)→rgb(255, 230, 230)不如 →rgb(255, 220, 240)醒目) - 浅色背景配字:提高 G 值比提 R/B 更有效(
rgb(40, 60, 40)比rgb(60, 60, 60)更清晰) - 验证工具推荐:用 Chrome DevTools 的无障碍检查(Elements → Accessibility pane),它会直接标出对比度是否达标
要不要用 HSL 替代 RGB 来调色
可以,但要注意:HSL 的 lightness 是感知亮度近似值,不是物理亮度。比如 hsl(0, 0%, 80%)(浅灰)和 hsl(120, 100%, 50%)(纯绿)对比度可能只有 2.1:1——因为绿色在低光下视觉亮度更高。
实操建议:
- 先用 HSL 快速调整色相/饱和度,再切回 RGB 模式查真实对比度
- 对关键文案(按钮文字、表单标签),始终以 RGB 或十六进制值 + 对比度工具验证为准
- 避免用
hsl(0, 0%, 95%)这类极浅色配hsl(0, 0%, 5%)极深色——看似反差大,但实际在 OLED 屏上灰阶压缩会导致细节丢失










