我有div
一个a
标签。然后我给opacity:0.5
了div
不透明度里面的文本也是0.5我不想使用背景图片,那么我怎么能opacity:1
在我的div里面有一个文本呢opacity:0.5
?
6 回答
使用 rgba 设置父级的背景颜色(包括 alpha 透明度)。例子:
.Container {
background-color:rgb(0,0,0); /* fallback for IE 8 and below */
background-color:rgba(0,0,0,0.5);
}
.Text {
color:rgb(255,255,255);
}
这会在使用颜色时设置容器背景的不透明度,但不会设置子对象的不透明度。如果您需要这样做,请将孩子的不透明度设置为您想要的其他课程:
.OtherChildItem {
opacity:0.5;
filter:alpha(opacity=50); /* IE 8 and below */
}
如果要使用背景图像,只需在图像本身上设置不透明度(使用 PNG)。
你不能。在 HTML 渲染模型中,真正的子不透明度不能大于其父不透明度。
从文档(强调我的):
不透明度可以被认为是一种后处理操作。从概念上讲,在将元素(包括其后代)渲染为 RGBA 离屏图像后,不透明度设置指定如何将离屏渲染混合到当前的复合渲染中。
您必须将您的子 div 放在父 div 之外。这通常使用与静态定位不同的定位来实现。
使用完全不同<div>
的文本。
<div id="parentDiv">
<div id="mainDiv">
</div>
<div id="childDiv">
Hello
</div>
</div>
CSS
#parentDiv
{
position:relative;
}
#childDiv
{
position:absolute;
top:45px;
left:45px;
opacity:1;
}
#mainDiv
{
width:100px;
height:100px;
opacity:0.5;
}
检查一下:http: //jsfiddle.net/AliBassam/aH9HC/我添加了背景颜色,所以你可以注意到结果。
既然是逼你用absolute
,我不希望你对文字定位有问题,所以做一些数学计算得到最好的位置:
top = ( Height of Div Opacity(0.5) - Height of Div Opacity(1) ) / 2
left = ( Width of Div Opacity(0.5) - Width of Div Opacity(1) ) / 2
a 标签从父 div 获取不透明度。您可以在 div rgba(0, 0, 0, 0.5) 和标签 rgba(255, 0, 0, 1.0) 上使用 rgba CSS 属性。
就像上面的答案一样,你需要一个单独的文本 div,绝对定位以适应不透明的 div。您可能还想将 z-index 设置为较高的值。
警告:仅当您希望外部元素完全透明时,此解决方案才有效。
代替opacity: 0
andopacity: 1
使用visibility: hidden
andvisibility: visible
在我的情况下工作(可能不适用于你的情况,但值得一试):)