CSS3透明度的最高精度是多少?

10

我一直在生成交互淡入淡出的透明度

然而我认为,使用未舍入的透明度数值不是一个好主意。如果最大精度低于 JavaScript 的最大精度,浏览器似乎会将该值四舍五入,但仍然认为值已更改。

所以问题是,CSS3 opacity 的最大精度是多少才有意义?


5
我有预感这取决于实现。 - BoltClock
我没有具体的证据,但为了让IE表现良好,我一直认为透明度在0到1之间的小数可以提供11种可能性,虽然不多,但它们保证了一种“变化”。 - David Barker
我刚在Chrome中尝试了Math.random,并且设置和获取16个小数位似乎不是问题,我猜问题更多的是什么是实际可行的,你真正能看到的区别是什么? - adeneo
还应该注意到,jQuery使用大约16-17个小数位 -> http://jsfiddle.net/pXqdH/2/ - adeneo
1个回答

12

透明度可以使用任何数量的小数点,但问题在于HTML只能以256种不同的方式改变亮度。因此,最敏感的透明度会出现在黑色覆盖白色的情况下,其可见色调具有256种不同的变化。这是因为R、G和B之间的比率必须始终保持相同才能保持相同的颜色。

因此,由于最敏感的颜色具有256个不同的值,对可见输出产生影响的最小变化将是1/256 = 0.00390625。理论上,这应该是增加透明度的最小步长。

经过测试,我注意到使用简单的取色器,在此示例fiddle中,底部的div是唯一一个具有任何颜色变化的。顶部的2个div的颜色为#000000,而底部的div的颜色为#010101。因此,基于这个,我会说:

  1. 输入的值没有被四舍五入,或者如果它们被四舍五入了,那么它们总是向下舍入(floor function)。
  2. 透明度的最大灵敏度为3个小数点。

应该注意的是,这全部在Google Chrome中进行了测试,而且像BoltClock所说的那样,这可能因实现而异。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接