CSS覆盖了rgba transpanrency

jin*_* ni 5 html css

<!doctype>
<html>
<head>
    <style>
        div {
           background:rgba(0,255,255,0.3);
        }
        #div1 {
           width:300px;
           height:300px;           
        }
        #div2 {
           width:200px;
           height:200px;          
        }
    </style>
</head>
<body>
    <div id="div1"><div id="div2"></div></div><br/>
</body>
Run Code Online (Sandbox Code Playgroud)

div2的实际计算透明度是多少?我很迷惑.未知数不是0.3 + 0.3或0.3 + 0.3*0.3

sho*_*dev 6

alpha通道的总和可以计算为:

alpha_top + alpha_bottom*(1 - alpha_top)=
0.3 + 0.3*(1 - 0.3)=
0.3 + 0.3*0.7 =
0.3 + 0.21 =
0.51

有关更多说明,请参阅Alpha Compositing @维基百科,其中列出的公式为:

式

要么

式

这基本上与BogdanKuštan使用的公式相同,也可以在bwoebi的答案中找到.


Bho*_*yar 0

既然您已经应用了不透明度,那么div{}这将是.3for#div1{}.3 * .3 = .09for #div2{},因为 #div1 具有不透明度值.3,而 #div2 也使用不透明度,但当前保持不变.3,因此它将为子项乘以。