是否可以删除opacity
从父母到孩子的继承div
?
例子
<style type="text/css">
.parent {
opacity:.5;
}
.parent div {
opacity:1; /* I want this to override the ".5", but instead it combines */
}
</style>
<div class="parent"><div></div></div>
就像 fmsf 所说,这是不可能的。如果您正在寻找一种使背景颜色或颜色透明的方法,您可以尝试 rgba。这在 IE6 中不受支持。
#my_element {
/* ie6 fallback - no opacity */
background-color:rgb(255, 255, 255);
/* rgba(red, green, blue, alpha); */
background-color:rgba(255,255,255,0.5);
}
不,你不能
不透明度完全继承自父亲的 div。
意义:
#father{
opacity: 0.5;
}
#child{
opacity: 0.9; /* actualy means opacity 0.5*0.9 == 0.45 of opacity value */
}
编辑:
如果你想欺骗它但保留你透明父亲的“工作流程”。您可以将父亲 div 的副本(大小和位置)放在父亲的顶部。
#father, #copy{
your css here
opacity: 0.5;
}
#copy{
opacity: 1;
background: transparent;
z-index: 1000; /* or one more than the father */
}
现在,不要将您的非透明 HTML 放在父亲身上,而是将其放在副本上。
不,不是严格意义上的你要询问。因为发生的事情并不是真正继承了任何传统意义上的值,而是子控件是部分透明的,这是在部分透明的容器中的直接影响。
在很多情况下,您可以解决它。
所以这行不通:
<div id="parent" style="opacity: 0.5; background-color: red;">
<div id="child" style="opacity: 1"> Still just 50% visible </div>
</div>
但你可以这样做:
<div id="wrapper" style="position: relative;">
<div id="parent" style="position: absolute; top: 0; left: 0; opacity: 0.5; background-color: red; width: 100%;"> </div>
<div id="child" style="position: absolute; top: 0; left: 0;"> This will be 100% visible </div>
</div>
有一些警告,但这是实现您想要的唯一好方法。
在此示例中,我正在处理一行文本,并且在“父级”中,我包括一个
也将占用一行高度的文本。如果你的“孩子”更高,那么“父母”就不会长大,因为它根本就不是父母。您必须手动设置高度。
您还必须手动指定宽度,因为您正在处理绝对定位的元素。
在人们开始说绝对定位是解决设计问题的一种糟糕方法之前,我会说,有一个场合我认为它是完全合法的:当也position: relative
像上面的例子一样处理时,绝对基于那个定位一个元素,而不是在整个窗口上。
创建一个透明的 PNG 并将其应用background
为父类,而不是使用opacity
.
有关演示,请参阅Twitter 的布局(特别是主要内容周围的背景/边框)。
您可以避免父子不透明度继承,但它会很麻烦: http ://www.impressivewebs.com/css-opacity-that-doesnt-affect-child-elements/
还有一个插件可以完成这项工作,名为:thatsNotYoChild.js。
使用 HTML5,您还可以使用RGBA设置不继承透明度 (alpha) 的背景颜色。
例子:
/* Black with 75% transparency */
background-color: rgba(0, 0, 0, 0.25);