MiServe DevTools

我的贴纸

把工具固定在这里,会保存在此浏览器中。

颜色转换与对比度检查

在 HEX、RGB、HSL、HWB、OKLCH 和 OKLab 之间转换颜色,检查 WCAG 对比度,并生成一组由浅到深的色阶。

HEX
RGB
HSL
HWB
OKLCH
OKLab
最接近的 CSS 颜色名称

对比度检查

大号文字,字号 24 像素

普通文字,字号 16 像素。如果这句话读起来吃力,说明这组颜色需要更高的对比度。

对比度(WCAG 2)

  • AA,普通文字(4.5:1)
  • AA,大号文字(3:1)
  • AAA,普通文字(7:1)
  • AAA,大号文字(4.5:1)

色阶

以该颜色的色相和色度,在 OKLCH 中取 11 级亮度;sRGB 无法显示的地方会降低色度。点击色块即可复制它的 hex 代码。

在浏览器中运行。粘贴的内容不会被上传。

关于此工具

同一个 sRGB 颜色的四种写法

HEX、RGB、HSL 和 HWB 是 sRGB 颜色的四种写法,sRGB 是 Web 的默认色彩空间。HEX 和 RGB 直接给出红、绿、蓝三个通道,取值都是 0 到 255。HSL 给出色相角度、饱和度和亮度;HWB 使用相同的色相角度,再加上混入的白色量和黑色量。在它们之间转换只改变写法,不改变颜色。

八位的 hex 代码(如 #5a3ff080),或斜杠后面的第四个值(如 rgb(90 63 240 / 0.5)),表示加上 alpha 通道。用空格分隔的写法是 CSS Color Level 4 语法,所有现行浏览器都支持;逗号写法 rgba(90, 63, 240, 0.5) 是为了兼容旧工具。

OKLCH 和 OKLab 带来了什么

OKLab 是 Björn Ottosson 在 2020 年设计的色彩空间,目标是让数值上相等的步长在人眼看来也相等。OKLCH 是同一空间的极坐标形式:亮度从 0 到 1、色度(颜色有多鲜艳)和色相角度。亮度相同的两个 OKLCH 颜色看起来差不多一样亮,HSL 则不然:亮度同为 50% 的黄色和蓝色,看起来差别很大。

OKLCH 还能描述 sRGB 屏幕无法显示的颜色。输入这样的颜色时,此工具会保持它的亮度和色相,降低色度直到颜色落入色域,并告诉你做了这样的处理。

对比度如何计算

WCAG 2 把对比度定义为 (L1 + 0.05) / (L2 + 0.05),其中 L1 和 L2 分别是较亮和较暗颜色的相对亮度。结果从两种相同颜色的 1:1,到白底黑字的 21:1。

AA 级要求普通文字至少 4.5:1,大号文字至少 3:1;AAA 级要求 7:1 和 4.5:1。大号文字指至少 24 个 CSS 像素,粗体则约 18.7 像素。这里显示的对比度向下取整,因为 4.499:1 并不满足 4.5:1。

此工具如何计算这些值

转换在浏览器中用 JavaScript 完成,使用 sRGB 传递函数和随该色彩空间一起发布的 OKLab 矩阵。每个输出都四舍五入到几位小数,位数的选择保证该值用这些公式能转换回同一个 8 位颜色。浏览器计算 OKLCH 和 OKLab 时所用的常数可能略有不同,所以粘贴到别处的 OKLCH 或 OKLab 值,可能在某个通道上相差 255 级中的一两级,最常见于饱和的绿色。最接近的命名颜色是在 OKLab 中距离最小的那个。

常见问题

为什么我的 OKLCH 颜色转换后变了?

OKLCH 能描述 sRGB 色域以外的颜色,而 HEX、RGB 和 HSL 不能。此工具会保持亮度和色相,降低色度直到颜色落入 sRGB,然后显示这个颜色的值。

WCAG AA 要求多少对比度?

普通文字至少 4.5:1,大号文字至少 3:1。大号文字指 24 像素或以上,粗体则约 18.7 像素或以上。用户界面组件和有意义的图形,与相邻颜色之间也需要 3:1。

rgb(255 0 0) 和 rgb(255, 0, 0) 一样吗?

一样。带空格的写法是当前的 CSS 语法,所有现行浏览器都支持。带逗号的写法较旧,但仍然有效;如果某个工具或邮件客户端不接受新写法,就用它。

对比度检查能处理半透明颜色吗?

能。半透明的文字颜色会先与背景混合,半透明的背景则与白色混合,因为对比度取决于最终显示在屏幕上的颜色。

图形分类的其他工具