如何取消子元素的不透明度?

kha*_*anh 9 css opacity

我想为父级应用不透明度,但我不希望子元素继承此不透明度.

<div class="parent">
 <div class="child"></div>
</div>

.parent {
  opacity: 0.6;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法"取消"继承的不透明度?也许强迫它opacity=1为儿童元素?

Yi *_*ang 11

如果子项的不透明度为1,则子项的不透明度将始终为父项的不透明度.

这不是继承的问题,而是计算不透明度的方式.

例如,

<div id="parent">
    <div></div>
</div>

<div id="original">
</div>

<div id="quarter">
</div>

#parent div, #quarter {
    width: 100px;
    height: 100px;
    background-color: orange;
}

#parent div {
    opacity: 0.5;
}

#parent {
    opacity: 0.5;
}

#quarter {
    opacity: 0.25;
}
Run Code Online (Sandbox Code Playgroud)

#quarter从你的角度来看,不透明度与其相同#parent div,但实际上,#parent div它的不透明度是其两倍#quarter.有关更多详细信息,请参阅此jsfiddle:http://jsfiddle.net/HUaNm/


避免这种情况的唯一方法是将孩子移出父母.或者,根据您在此处的需要,您还可以使用rgba颜色作为父级的背景/边框/字体颜色而不是不透明度,但效果与应用不透明度不同.

  • 这让我疯了.如果只有浏览器支持不透明度:1.5或其他一些过度引用的方式,这将是一个非问题. (7认同)