我已经尝试找出一个月了,但是没有任何效果。我需要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!
这里发生了什么?我一直在阅读我能找到的所有东西,然后疯狂地进行着,询问有关它的问题,但是什么也没有!
救命,任何人!
最佳答案
我认为这仅仅是以与您期望的方式不同的方式舍入数字的问题。
当然,RGB和HEX基本上是相同的三对数字,它们之间的转换是无缝的,但是HSL转换要复杂得多。我不是要算数学,但是如果有人想读的话是here it is。
请注意,在元素检查器控制台(在Chrome中)中,您可以单击颜色值旁边的彩色正方形,然后在HSL,RGBA和HEX之间进行切换。如果将“正确”的十六进制更改为HSL,然后又更改回十六进制,则将得到“错误”的十六进制。这可能是舍入此计算本身的方式,而不是SASS本身的问题。
为了解决这个问题,我可能建议您使用本机HSL值,而不是将其强制转换为HEX,除非您的代码中有此必要。 Support for HSL看起来不错。
关于css - HSL到HEX的Sass调整颜色错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45215913/