微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

CSS和javascript中的(Chromium)alpha颜色值(在rgba中)

如果我通过 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 举报,一经查实,本站将立刻删除。