哪些颜色在黑白背景上看起来好看?那么,色彩对比度是如何计算的呢?相对亮度又是如何计算的呢?让我们来算一算!颜色列表

2025-06-08

黑色和白色搭配哪种颜色好看?

那么色彩对比度是如何计算的呢?

但是相对亮度是如何计算的呢?

我们来算一下吧!

颜色列表

想象一下,你需要找到一种在黑色和白色下都看起来不错的颜色。我所说的“好看”是指至少符合WCAG AA 对比度(最低)标准,即4.5:1的比例。

tl;dr滚动到末尾以获取颜色列表

那么色彩对比度是如何计算的呢?

WCAG对比度定义如下:

对比度
(L1 + 0.05)/(L2 + 0.05),其中

  • L1 是较浅颜色的相对亮度,并且
  • L2 是较暗颜色的相对亮度。

注意
对比度范围可以从 1 到 21(通常写为 1:1 到 21:1)。

很简单的数学题,对吧?取两个值,然后除以它们。

但是相对亮度是如何计算的呢?

WCAG相对亮度定义如下:

相对亮度
色彩空间中任意一点的相对亮度,0 表示最深的黑色,1 表示最亮的白色

注意:
对于 sRGB 色彩空间,颜色的相对亮度定义为 L = 0.2126 * R + 0.7152 * G + 0.0722 * B,其中RGB定义如下:

  • 如果 R sRGB <= 0.03928 则R = R sRGB /12.92 否则R = ((R sRGB +0.055)/1.055) ^ 2.4
  • 如果 G sRGB <= 0.03928 则G = G sRGB /12.92 否则G = ((G sRGB +0.055)/1.055) ^ 2.4
  • 如果 B sRGB <= 0.03928 则B = B sRGB /12.92 否则B = ((B sRGB +0.055)/1.055) ^ 2.4

并且 R sRGB、 G sRGB和 B sRGB定义为:

  • R sRGB = R 8位/255
  • G sRGB = G 8位/255
  • B sRGB = B 8位/255

别被这些公式搞糊涂了,这仍然是简单的数学!最后三行只是通过将颜色通道除以255来对其进行归一化,以下是一些示例:

颜色 R 8位 G 8位 B 8位 -> RGB G sRGB B sRGB
黑色的 0 0 0 0 0 0
白色的 255 255 255 1 1 1
红色的 255 0 0 1 0 0
紫色的 128 0 128 0.502 0 0.502
橙子 255 165 0 1 0.647 0

然后,如果归一化值小于或等于 0.03928,则通过简单的除法(除以 12.92)得到RGB值;如果归一化值大于 0.03928,则应用上面的指数公式。最后一步是用不同的权重对这三个值求和。

我们来算一下吧!

不难看出,黑色的相对亮度为 0,白色为 1。计算它们的对比度为 (1 + 0.05) / (0 + 0.05) = 21。我们可以通过以下方式计算任何其他颜色与黑色和白色的对比度(其中“c”是颜色的相对亮度):

  • 反黑:(c + 0.05)/(0 + 0.05)
  • 对阵白棋: (1 + 0.05) / (c + 0.05)

我们要求对比度至少为 4.5,因此:

  • 对阵黑方: (c + 0.05) / (0 + 0.05) >= 4.5
  • 对阵白棋: (1 + 0.05) / (c + 0.05) >= 4.5

解决这两个不等式可得出:

  • 反对黑色:c> = 0.175
  • 对阵白色:0.1833 >= c

最终我们得到的相对亮度要求为:

0.175 <= c <= 0.1833

颜色列表

最后,我创建了一支笔,它可以在 RGB 颜色空间中迭代,从黑色到白色,每个通道以 0x11 = 17 为增量。迭代所有颜色会耗费一些时间和 CPU,而且我确信列出大约 30 万种颜色并不实际。因此,这支笔迭代了所有可以用 3 位十六进制表示法描述的颜色,并列出了符合我们要求的 76 种颜色。请明智地使用它们 ;)

鏂囩珷鏉ユ簮锛�https://dev.to/finnhvman/which-colors-look-good-on-black-and-white-2pe6
PREV
2024 年你必须尝试的 9 大 AI API
NEXT
使用 Tailwind 创建 PDF