【发布时间】:2020-01-08 06:50:05
【问题描述】:
我发现的奇怪的东西。将#579f2f 转换为hsl 时,我到达hsl(99, 54%, 40%);。将其转换回十六进制时,我得到#559d2f。我使用了各种在线工具对此进行了测试。
我猜原因是 hsl 将颜色描述为色调 (0-360)、饱和度 (0-100%) 和亮度 (0-100%),而十六进制只是 RGB (0-255,0-255, 0-255)写成三个十六进制数,所以 hsl 描述的颜色空间(或者你可以表达的颜色数量)是不同的。
RGB: 255^3 = 16,581,375 colors
HSL: 360*100*100 = 3,600,000 colors
我的假设是正确的还是有其他原因?
【问题讨论】:
-
#579f2f 的实际 HSL 将是
hsl(98.6, 54.4%, 40.4%)所以我会说这是因为四舍五入。在这里试试:convertacolor.com -
这是因为将 hsl 值四舍五入为 int。而且,是的,您可以使用 int hsl 颜色比使用 int rgb 颜色 cpver 更多颜色。
-
BTW rgb(8 位)有
256^3,但请尽量不要假设 8 位值,并且 BTW 在 hsl 中,所有 S=0 或 L=0 的值都描述相同的颜色。 -
@OleSpaarmann 哎呀!我把它弄混了,对不起。使用 int rgb 和 hsl 肯定会在 rgb 空间中为您提供更多的 css 颜色。
-
@OleSpaarmann 对我来说它适用于 HSL 中的小数 jsfiddle.net/n2azqx9f/1 它不适合你吗?