CSS3 spec仅指定:
The format of an HSLA color value in the functional notation is ‘hsla(’ followed by the hue in degrees,saturation and lightness as a percentage,and an,followed by ‘)’.
那么我是否理解这些值不会被解释为整数而是浮点数?例:
hsla(200.2,90.5%,10.2%,.2)
这将极大地扩展HSL覆盖的其他小(相对于RGB)颜色范围.
它似乎在Chrome中呈现良好,但我不知道它们是否只是将其解析为INT值或什么.
解决方法
HSL值在传递到系统之前会转换为十六进制RGB值.设备可以将“设备色域”之外的任何结果RGB值(可显示的颜色范围)剪切为可显示的值. RGB值以十六进制表示.这是浏览器将HSL值转换为RGB值的指定算法.标准没有指定舍入行为 – 并且有多种舍入方法,因为在C或C中似乎没有内置舍入函数.
HOW TO RETURN hsl.to.rgb(h,s,l): SELECT: l<=0.5: PUT l*(s+1) IN m2 ELSE: PUT l+s-l*s IN m2 PUT l*2-m2 IN m1 PUT hue.to.rgb(m1,m2,h+1/3) IN r PUT hue.to.rgb(m1,h ) IN g PUT hue.to.rgb(m1,h-1/3) IN b RETURN (r,g,b)
换句话说,您应该能够使用HSLA中的小数值表示HSLA中完全相同的颜色范围.