📝 博客 · 2026-08-02 · ⏱ 13 分钟

颜色对比度检测:WCAG 无障碍

颜色对比度检测教程:WCAG 2.1 AA/AAA 标准、4.5:1 比例、色盲友好设计,让你的网站符合无障碍标准。

颜色对比度WCAG无障碍前端开发

颜色对比度检测:WCAG 无障碍

文字在背景上不够清晰、按钮点击区域不显眼、色盲用户看不清内容——这些是无障碍设计的问题。颜色对比度检测确保网站对所有人可读。本文详解 WCAG 标准和检测工具。

什么是 WCAG?

WCAG(Web Content Accessibility Guidelines)是 W3C 制定的 Web 内容无障碍指南,定义网站无障碍标准。

WCAG 2.1 标准

级别正文对比度大文字对比度
AA≥ 4.5:1≥ 3:1
AAA≥ 7:1≥ 4.5:1

大文字定义

对比度计算

对比度 = (L1 + 0.05) / (L2 + 0.05)

L1 是较亮颜色的相对亮度,L2 是较暗颜色的相对亮度。

52tool 对比度检查器

工具地址:对比度检查

功能

实战 1:检测文字对比度

输入:

前景色:#333333
背景色:#FFFFFF

输出:

对比度:12.6:1
小文字 AA:通过
小文字 AAA:通过
大文字 AA:通过
大文字 AAA:通过

实战 2:检测不合格颜色

输入:

前景色:#999999
背景色:#FFFFFF

输出:

对比度:2.85:1
小文字 AA:未通过
小文字 AAA:未通过
大文字 AA:未通过
大文字 AAA:未通过

灰色文字在白底上对比度不足。

实战 3:色盲模拟

前景色:#FF0000(红)
背景色:#00FF00(绿)
对比度:2.9:1

对正常视觉对比度尚可,但红绿色盲无法区分。

工具模拟色盲视图,确认色盲友好。

对比度等级详解

1.0:1 - 3.0:1

极差,几乎不可读。仅用于装饰元素。

3.0:1 - 4.5:1

差。大文字勉强可读,小文字不行。WCAG AA 大文字最低标准。

4.5:1 - 7.0:1

中等。小文字勉强可读。WCAG AA 标准通过,AAA 不通过。

7.0:1 - 21.0:1

良好。所有情况可读。WCAG AAA 通过。

21:1

最高(黑 vs 白)。极致可读。

常见颜色组合对比度

通过 AAA(≥ 7:1)

前景背景对比度
#000000 黑#FFFFFF 白21.0:1
#333333#FFFFFF12.6:1
#FFFFFF#2C3E5011.5:1
#1A1A1A#F5F5F512.6:1

通过 AA 但不 AAA(4.5-7:1)

前景背景对比度
#FFFFFF#3498DB4.5:1
#FFFFFF#E74C3C4.83:1
#555555#FFFFFF7.5:1

不通过 AA(< 4.5:1)

前景背景对比度
#999999#FFFFFF2.85:1
#FFFFFF#F1C40F 黄1.65:1
#3498DB#FFFFFF3.6:1
#888888#FFFFFF3.5:1

各类元素对比度要求

1. 正文文字

2. 大文字(≥ 18pt 或 ≥ 14pt 加粗)

3. UI 组件

按钮、表单边框、图标:

4. 焦点指示

键盘导航时的边框:

5. 非文字内容

装饰图标、分隔线:

6. 链接

色盲友好设计

色盲类型

色盲友好原则

#### 1. 不只用颜色传递信息

错误:红色框表示错误,绿色框表示成功

正确:红色框 + "错误" 文字,绿色框 + "成功" 文字

#### 2. 用形状或图标辅助

#### 3. 用纹理或图案

图表中不同系列用不同纹理(实线、虚线、点线)而非纯色。

#### 4. 避免红绿组合

红绿是色盲最难区分。用蓝橙代替。

工具模拟色盲

52tool 对比度检查器支持色盲模拟:

模拟查看设计是否可区分。

实战场景

场景 1:网页正文

文字:#333333
背景:#FFFFFF
对比度:12.6:1 ✓ AAA

场景 2:按钮文字

按钮背景:#3498DB
按钮文字:#FFFFFF
对比度:4.5:1 ✓ AA

场景 3:错误提示

错误文字:#E74C3C
背景:#FFFFFF
对比度:4.83:1 ✓ AA

但建议加图标 ❌,不只靠颜色。

场景 4:链接

正文:#333333
链接:#0066CC
对比度(链接 vs 正文):5.4:1 ✓ AA

场景 5:暗色模式

文字:#FFFFFF
背景:#1A1A1A
对比度:16.1:1 ✓ AAA

场景 6:表单边框

边框:#888888
背景:#FFFFFF
对比度:3.5:1 ✗ 不达 AA

加粗边框或加深颜色到 #555555(7.5:1)。

场景 7:禁用状态

禁用文字:#999999
背景:#FFFFFF
对比度:2.85:1 ✗ 不达 AA

禁用状态可豁免对比度要求(WCAG 1.4.3 例外)。

场景 8:图表颜色

系列 1:#3498DB 蓝
系列 2:#E74C3C 红

红绿色盲难区分。改为:

系列 1:#3498DB 蓝
系列 2:#F39C12 橙

蓝橙组合色盲可区分。

编程实现

JavaScript

function luminance(r, g, b) {
  const a = [r, g, b].map(v => {
    v /= 255;
    return v <= 0.03928 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);
  });
  return a[0] * 0.2126 + a[1] * 0.7152 + a[2] * 0.0722;
}

function contrast(rgb1, rgb2) {
  const lum1 = luminance(rgb1[0], rgb1[1], rgb1[2]);
  const lum2 = luminance(rgb2[0], rgb2[1], rgb2[2]);
  const brightest = Math.max(lum1, lum2);
  const darkest = Math.min(lum1, lum2);
  return (brightest + 0.05) / (darkest + 0.05);
}

// 示例
const text = [51, 51, 51];  // #333
const bg = [255, 255, 255];  // #FFF
console.log(contrast(text, bg));  // 12.6

CSS 强制对比度

@media (prefers-contrast: high) {
  body {
    color: black;
    background: white;
  }
}

用户系统设置高对比度时,网站强制用最高对比度。

检测工具

在线工具

浏览器扩展

开发工具

设计工具

进阶技巧

技巧 1:暗色模式

暗色模式对比度:

浅文字 #EEEEEE
深背景 #1A1A1A
对比度:16.1:1

技巧 2:渐变背景

渐变背景对比度计算复杂,按渐变最差位置评估:

渐变:#3498DB → #2ECC71
最差位置取最深颜色评估

技巧 3:半透明覆盖

文字 #333333
背景 #FFFFFF
覆盖 rgba(0,0,0,0.5)
等效背景:#808080
对比度:4.5:1

技巧 4:响应式对比度

@media (max-width: 768px) {
  body { color: #000; }  /* 移动端提高对比度 */
}
@media (min-width: 769px) {
  body { color: #333; }
}

技巧 5:CSS 变量管理

:root {
  --text-primary: #333;
  --text-secondary: #666;
  --bg-primary: #fff;
  --bg-secondary: #f5f5f5;
}

集中管理,便于整体调整。

常见问题

Q: 对比度 4.5:1 怎么算?

A: (L1 + 0.05) / (L2 + 0.05) = 4.5,L 是相对亮度。用工具算最快。

Q: 暗色模式还要满足对比度吗?

A: 要。暗色模式同样需要 ≥ 4.5:1。

Q: 装饰元素要满足对比度吗?

A: 不强制。装饰图标、分隔线等非信息内容豁免。

Q: 占位符要满足对比度吗?

A: 要。AA 要求 ≥ 4.5:1,但允许低于正文(建议 ≥ 3:1)。

Q: 渐变背景怎么算对比度?

A: 取渐变中对比度最低的位置评估。如果最低 < 4.5:1 则不达标。

Q: 工具会泄露我的颜色吗?

A: 52tool 对比度检查在浏览器端运行,颜色值不上传服务器。

常见问题解答

Q: 怎么检测颜色对比度?

A: 1) 打开 52tool 对比度检查;2) 输入前景色和背景色;3) 查看对比度数值和 AA/AAA 是否通过。

Q: WCAG AA 和 AAA 区别?

A: AA 是基本标准(4.5:1),AAA 是最高标准(7:1)。商业网站通常满足 AA,政府/医疗网站要求 AAA。

Q: 文字颜色 #333 在白背景上够吗?

A: 够。对比度 12.6:1,远超 AAA 标准(7:1)。

Q: 红色文字在白背景上够吗?

A: 看红的具体值。#FF0000 对比度 4.0:1,不达 AA。#CC0000 对比度 5.9:1,达 AA。

Q: 怎么让色盲用户区分信息?

A: 1) 不只用颜色传递信息(加文字/图标);2) 用形状/纹理辅助;3) 避免红绿组合;4) 用蓝橙代替。

Q: 渐变背景对比度怎么算?

A: 取渐变中对比度最低的位置评估。或简化为渐变两端分别评估,取最差值。

总结

颜色对比度是无障碍设计的基础:

记住:4.5:1 是底线不只靠颜色传达信息暗色模式也要满足对比度