参考链接
opacity
和 rgba
区别
两者的后代元素都不会继承对应的属性值
但
opacity
会影响其子元素的透明度,而
rgba
不会影响其子元素的透明度。
补充
首先子元素会受到父元素的 opacity 属性的影响:
- 设置父元素
opacity: 0.5
,子元素不设置opacity
,子元素会受到父元素opacity
的影响,也会有0.5
的透明度。
其次子元素的透明度是基于父元素的透明度计算的:
- 设置父元素
opacity: 0.5
,即使设置子元素opacity: 1
,子元素的opacity: 1
也是在父元素的opacity: 0.5
的基础上设置的,因此子元素的opacity
还是0.5
。
其他测试:
HTML
<div class='box opacity'>
opacity
<div class='a1'>opacity
<div class='b1'>opacity</div>
</div>
</div>
<div class='box opacity'>
opacity
<div class='a2'>opacity
<div class='b2'>opacity</div>
</div>
</div>
CSS
.box { display: inline-block; }
.opacity { opacity:1; }
.a1 { opacity: 1; }
.b1 { opacity: .25; }
.a2 { opacity: .5; }
.b2 { opacity: .5; }
直接设置 0.25
和 0.5 * 0.5
叠加,最后一行的字母透明度看起来是相同的。
(肉眼看可能还是没那么有说服力,故只当作简单的测试验证)