我一直试图解决这个问题一个月,但没有任何效果。我需要3种颜色来计算HSL之间的差异。我做了并使用adjust-color应用差异,以便我以后可以添加另一种颜色作为基础。
但HSL到HEX并没有在任何地方正确转换。在主黑色情况下,它返回我想要的颜色(#154360)。但是在初级照明的情况下它并没有(我试图得到的颜色是#5499C7,我实际得到的是#5298c7)。这没有任何意义,因为我正确地计算了一切,不应该是一个问题。
这是我写的:
$primary: hsl(204, 64%, 44%);
$primary-dark: adjust-color($primary, $lightness: -21%, $hue: -1deg);
$primary-light: adjust-color($primary, $saturation: -13%, $lightness: 11%);
这里是codepen!
这里发生了什么?我一直在阅读我能找到的所有内容,并且像疯了一样经历过这样的问题,但却一无所获! 帮助,任何人!
答案 0 :(得分:0)
我认为这只是以与你预期不同的方式对数字进行舍入。
当然RGB和HEX基本上是相同的三对数字,它们之间的转换是无缝的,但是HSL转换比这更复杂。我不打算进入数学,但如果有人想读,我会here it is。
请注意,在元素检查器控制台(在Chrome中)中,您可以单击颜色值旁边的彩色方块,然后在HSL,RGBA和HEX之间切换。如果您将“正确”HEX更改为HSL并返回HEX,则会出现“错误”HEX。这可能是这个计算本身的四舍五入,而不是SASS本身的问题。
要解决这个问题我可能建议使用原生HSL值而不是将它们转换为HEX,除非你的代码中有必要。 Support for HSL似乎很不错。