我有这样的结构:
<div class="abc">
<ul>
<li>something</li>
...
</ul>
</div>
我需要在abc
div 上应用一个不透明度选项。如果我这样做,它会起作用,但是里面的文本<ul>
不透明,因为abc
DIV => 里面的文本<ul>
更轻。
有什么方法可以应用于opacity
DIV(其背景),但不能应用于 DIV 内的内容?
谢谢
如果不将 ul 从 div 中拉出,我能想到的唯一方法是使用 rgba 使背景颜色部分透明(如果它是纯色):
background-color:rgba(0,0,0,.5);
这将使背景为黑色,不透明度为 50%,但仅适用于较新的浏览器。
jsFiddle:http: //jsfiddle.net/jdwire/XzeGE/
为了支持较旧的浏览器,您可以改为 base64 将一个小 png 编码到 css 中(或仅引用外部图像)。有关更多信息,请参阅http://en.wikipedia.org/wiki/Data_URI_scheme ,有关在 css 或 html 中嵌入 base64 编码图像的缺点,请参阅https://stackoverflow.com/a/5258101/1721527。
如果背景是图像,只需将其设为部分透明的 png。
如果背景是一种颜色,您可以使用这样的rgba
背景颜色:
background-color: rgba(0, 0, 0, 0.5);
这将产生一个不透明度为 50% 的黑色背景,而不会影响子元素的不透明度。
请注意,这不适用于旧版本的 IE(我认为是 6 和 7)。
您需要一个包含内容的单独 div 并将其位置设置在不透明 div 上,如下所示:
<div class="container">
<div class="opacity"></div>
<div class="content"></div>
</div>
CSS
.container{
position:relative;
}
.opacity{
//desired opacity here
}
.content{
position:absolute;
top:0;
left:0;
}
rgba
就像其他答案一样,如果我们在这里谈论背景颜色,这也是一个好方法。
仅当您计划有背景图像时才使用它。指定颜色的 alpha 值。
<div class="abc">
<div class="bgd"></div>
<ul class="def">
<li>something</li>
</ul>
</div>
.abc {
width: 200px;
height: 200px;
position: relative;
}
.bgd {
background: red;
opacity: 0.1;
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
z-index: 0;
}
.def {
z-index: 1;
}
改用 RGBA
background-color: rgba(0,0,255,0.5);
此处,最后一个值表示 0 到 1 级别的透明度
在我做任何与 Internet Explorer 相关的事情之前,我首先将 html 5 shim 调用到我的标题中
<!-- The HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]>
<script src="js/html5shiv.js"></script>
<![endif]-->
<!--The fav and touch icons -->
现在在你的 CSS 文件中,
div.abc ul { background-color: #333; }
div.abc ul li{background-color: #333;}
我想这就是你要找的东西?
您是否尝试将不透明度应用于内部元素?就像是:
div {
opacity: ....
}
div ul {
opacity: .....
}