如果我通过
javascript中的rgba(r,g,b,a)将alpha值设置为1以外的任何值,则浏览器设置的实际值略有不同.但CSS中的值设置完全匹配.
请参阅代码示例
code-pen-site
<head> <script type="text/javascript" language="javascript"> window.onload=function() { document.getElementById("p1").style["background-color"]="rgba(255,0.3)"; } </script> </head> <body> <p>RGB colors with opacity:</p> <p id="p1">Red</p> <p id="p2">Green</p> </body>
>使用Chromium浏览器
>按F12激活Inspector
>检查“红色”.
>“Red”将背景颜色设置为rgba(255,0.3),但在Inspector中,其值为rgba(255,0.298039)
>“绿色”的背景颜色设置为rgba(0,255,Inspector中的值与之匹配.
为什么如果通过Javascript设置CSS颜色,那么数字会改变?
解决方法
首先,我原来的观察是不正确的.如果单击“计算”选项卡以检查background-clor,则会在“样式”标记内部和内联元素内的CSS规则中观察到这种差异.一世
在chromium source code
此实现解释了alpha值的0.001961差异
// Convert the floating pointer number of alpha to an integer in the range [0,256),// with an equal distribution across all 256 values. int alphaComponent = static_cast<int>( clampTo<double>(alpha,0.0,1.0) * nextafter(256.0,0.0));
如果alpha为0.3,则alphaComponent变为0.298039. (如果我将alpha设置为[0.0,1.0]中的任何浮点数,则webInspector显示的数字与从上面的公式获取的alphaComponent值匹配.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。