颜色格式转换器

HEX、RGB、HSL、HSV 互转,自动生成明暗色阶,并按 WCAG 标准算出文字与背景的对比度是否达标。

#2b6cb0

它如何工作

任何输入都会被归一化成 {r,g,b} 三个 0–255 的通道值,再从这一份中间表示生成其余格式,所以四种写法永远一致。HEX 支持 #abc 简写与 #aabbcc 全写;rgb() / hsl() 用正则解析,兼容逗号与空格分隔。

对比度按 WCAG 2.1 的相对亮度公式计算:先把 sRGB 通道做伽马还原(c/255 后大于 0.03928 时取 ((c+0.055)/1.055)^2.4),加权得到亮度 L = 0.2126R + 0.7152G + 0.0722B,再做 (L1+0.05)/(L2+0.05)。正文文字需达到 4.5:1(AA),大号文字需 3:1

WCAG 达标门槛

用途AA(最低)AAA(增强)
正文文字(< 18.66px 或非粗体)4.5 : 17 : 1
大号文字(≥ 24px 或 ≥ 18.66px 粗体)3 : 14.5 : 1
图形与界面控件边界3 : 1

常见问题

HSL 的 L 和 HSV 的 V 有什么区别?

HSL 里 L=50% 是纯色,最亮最暗都趋近白黑;HSV 里 V=100% 已经是最亮,饱和度和明度是独立的两根轴。设计取色时用 HSL 更直观,调色板算法里常用 HSV。

为什么两个颜色看起来差很多,对比度却不高?

相对亮度是按人眼敏感度加权的(绿色权重最高 0.7152,蓝色最低 0.0722)。所以深蓝与深红的观感差异不小,亮度却接近,对比度自然偏低。

色阶是干什么用的?

给出同一色相从浅到深的 9 档,方便补齐 hover / active / 边框 / 背景等状态色。点击任意一格即可切换为当前颜色。