颜色代码转换器

实时互相转换 HEX、RGB、HSL,同时查看 HSV、CMYK 数值、与黑白的对比度以及搭配的调色板。

其他表示法(点击复制)
与白色的对比度: -与黑色的对比度: -
色调板(由浅到深,点击复制 HEX)
原色 · 邻近色(+30°) · 互补色(+180°) · 邻近色(−30°)

HEX、RGB、HSL、HSV、CMYK 分别是什么

颜色代码就是用不同的坐标系来记录同一种颜色。屏幕靠混合红、绿、蓝三种光来显色,所以屏幕上用的格式都源自 RGB 的三个数值。选哪种格式,取决于你要做什么。

转换公式

把 R、G、B 除以 255 得到 0 到 1 之间的 r、g、b,max 和 min 为三者的最大、最小值,d = max − min。

算例

例 1:暖金色 #C9A961。RGB 为 (201, 169, 97)。max = 201/255 = 0.788,min = 97/255 = 0.380,d = 0.408,所以 L = (0.788 + 0.380) / 2 ≈ 58%,S = 0.408 / (1 − |2 × 0.584 − 1|) ≈ 49%;最大值是 R,H = 60 × ((169 − 97) / 104) ≈ 42°。因此 HSL 约为 (42°, 49%, 58%),HSV 的 S ≈ 52%、V ≈ 79%,简单公式的 CMYK 为 (0%, 16%, 52%, 21%)。它与白色的对比度约 2.25:1,不适合做白底正文的文字色;与黑色约 9.33:1,足够。

例 2:橙红色 #FF5733。RGB (255, 87, 51) 中 max = 1,min = 0.2,d = 0.8,所以 L = 60%,S = 100%,H = 60 × ((87 − 51) / 204) ≈ 10.6°,显示为 11°。HSL 约 (11°, 100%, 60%),HSV (11°, 80%, 100%),CMYK (0%, 66%, 80%, 0%)。与白色的对比度约 3.15:1,超过大号文字的 3:1,但达不到正文通常要求的 4.5:1。

例 3:纯蓝 #0000FF。HSL 为 (240°, 100%, 50%),HSV 为 (240°, 100%, 100%),CMYK 为 (100%, 100%, 0%, 0%)。与白色的对比度约 8.59:1。同样是“100%”,在 HSL 和 HSV 里含义不同,这个例子正好说明这一点。

常用颜色参考表

下表是页面生成时用上面的公式算出来的,你可以把每一行的 HEX 填进输入框对照结果。

颜色HEXRGBHSL
黑色#0000000, 0, 00°, 0%, 0%
白色#FFFFFF255, 255, 2550°, 0%, 100%
红色#FF0000255, 0, 00°, 100%, 50%
绿色(酸橙)#00FF000, 255, 0120°, 100%, 50%
蓝色#0000FF0, 0, 255240°, 100%, 50%
黄色#FFFF00255, 255, 060°, 100%, 50%
青色#00FFFF0, 255, 255180°, 100%, 50%
洋红#FF00FF255, 0, 255300°, 100%, 50%
50% 灰#808080128, 128, 1280°, 0%, 50%
橙色#FFA500255, 165, 039°, 100%, 50%
暖金色(默认值)#C9A961201, 169, 9742°, 49%, 58%

为什么 CMYK 只是“近似”

屏幕的 RGB 受设备能发出的光的范围(色域)限制,印刷的 CMYK 能呈现的范围则取决于油墨、纸张和印刷方式,两者差别很大。上面的公式只是在两种体系之间做了简单的数学换算,并不反映真实油墨的颜色。 同样的 CMYK 数值,在铜版纸和哑粉纸上看起来不同;套用印刷厂的 ICC 色彩配置文件(如 FOGRA、SWOP 系列)之后数值也会改变。接近荧光的鲜艳绿、橙、蓝在 CMYK 里无法还原,印出来会发暗。 这里显示的 CMYK 只能当大致参考。做印刷品时,请在设计软件中按印刷厂要求的配置文件转换,颜色重要的话再用色卡或打样确认。

对比度是怎么算的

网页内容无障碍指南(WCAG)用“对比度”来评价文字色与背景色的明暗差。先把每个通道线性化:sRGB 值 v(0 到 1)不大于 0.04045 时取 v / 12.92,否则取 ((v + 0.055) / 1.055) 的 2.4 次方。 相对亮度 L = 0.2126 R + 0.7152 G + 0.0722 B,对比度 = (较亮一方的 L + 0.05) / (较暗一方的 L + 0.05)。 按 WCAG 2.x,AA 级要求正文至少 4.5:1,大号文字(约 24px 以上,或粗体 18.7px 以上)至少 3:1;AAA 级分别是 7:1 和 4.5:1。 本工具只显示所选颜色分别搭配白色和黑色时的对比度。要比较任意两种颜色,请使用色彩对比度检测器。

用 HEX 表示透明度

CSS 支持 #RRGGBBAA 形式的八位 HEX,最后两位是不透明度。不透明度 p% 对应 round(p / 100 × 255) 的十六进制值。例如 50% 是 127.5,四舍五入为 128,即十六进制 80,所以 #C9A96180 就是上面那种金色约 50% 不透明的版本。同样的颜色也可以写成 rgb(201 169 97 / 50%),可读性更好。

不透明度Alpha HEX十进制
100%FF255
90%E6230
80%CC204
70%B3179
60%99153
50%80128
40%66102
30%4D77
20%3351
10%1A26
5%0D13
0%000

本转换器只支持三位和六位 HEX。如果手头是八位值,请只输入前六位。

调色板是怎么生成的

色调板保持所选颜色的色相和饱和度,只把明度改为 90、75、60、45、30、15%。互补色是色相加 180°,邻近色是色相加减 30°(−30° 即 +330°)。 这是基于 HSL 的机械计算,并不会把人眼感受到的明暗均匀分开,例如同样的 L,黄色系看起来比蓝色系亮得多。请把调色板当作起点,用到界面中时再检查对比度并微调。想要更丰富的搭配,可以用配色方案生成器;想查有名字的 CSS 颜色,可以看网页颜色名称大全。

常见错误与注意事项

怎样使用转换结果

  1. 输入设计软件里选好的颜色的 HEX,复制 CSS 用的 rgb() 或 hsl() 写法。
  2. 把品牌色转成 HSL,只调整明度,得到悬停、禁用和背景的色调。
  3. 检查候选文字色相对白色或黑色是否超过 4.5:1,不够就调整明度。
  4. 需要印刷时,把 CMYK 近似值当起点,再用印刷厂的配置文件重新转换。

如果想了解十六进制本身,可以看进制转换器;长度、重量等单位请用单位换算器;要生成渐变代码,CSS渐变生成器会有帮助。

常见问题

点击调色板的颜色或结果标签会怎样?

点击调色板的色块会把它的 HEX 代码复制到剪贴板;点击 RGB、HSL、HSV、CMYK 标签则复制对应的写法。

能直接粘贴到设计软件里使用吗?

HEX 代码可以直接用于 Figma、Photoshop、CSS 等大多数工具。不过如果软件的色彩管理设置(sRGB、Display P3 等)不同,屏幕上看到的颜色可能略有差异。

可以输入三位的 HEX 吗?

可以。#FA0 会被当作每位重复后的 #FFAA00。带透明度的八位 HEX 不支持,请只输入前六位。

按 CMYK 数值印刷,颜色会和屏幕一样吗?

不会完全一样。这里的 CMYK 是数学近似,实际印刷色取决于油墨、纸张和配置文件。请按印刷厂提供的配置文件转换,并用打样确认。

为什么 HSL 里 L = 50% 最鲜艳?

HSL 的明度是最大与最小通道的平均值,一个通道最大、另一个为 0 时(如 255, 0, 0)L = 50%。提高 L 会混入白色,降低则混入黑色,都会让颜色不那么鲜艳。

相关工具