1、如果我们给父元素添加opacity:0.4后,子元素的red颜色也变成了0.4的透明度,
例子如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>透明度写法</title>
<style type="text/css">
*{
margin:0;
padding:0;
}
.wrap{
margin:200px auto;
width:200px;
height:200px;
background:black;
opacity:0.4;
position:relative;
}
.inner{
position:absolute;
width:100px;
height:100px;
background:red;
top:50%;
left:50%;
margin:-50px 0 0 -50px;
}
</style>
</head>
<body>
<div class="wrap">
<div class="inner"></div>
</div>
</body>
</html>
结果:
**解决方法:
父元素的透明度用rgba的方法
background:rgba(0,0,0,0.4);**
解决的后的代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>透明度写法</title>
<style type="text/css">
*{
margin:0;
padding:0;
}
.wrap{
margin:200px auto;
width:200px;
height:200px;
position:relative;
background:rgba(0,0,0,0.4);
}
.inner{
position:absolute;
width:100px;
height:100px;
background:red;
top:50%;
left:50%;
margin:-50px 0 0 -50px;
}
</style>
</head>
<body>
<div class="wrap">
<div class="inner"></div>
</div>
</body>
</html>
结果:
解决方案2:有兼容性问题;
利用CSS中的opacity属性可以实现一些视觉效果,但是父元素设置透明属性会被子元素继承,这是不想见到的,于是通过一些设置解决这个问题。
filter:alpha(opacity=50);
-moz-opacity:0.5;
-khtml-opacity: 0.5;
opacity: 0.5;
解决办法是利用CSS3中的rgba()进行设置,便不会被被子元素继承,同时为了兼容IE7、IE8等浏览器,需要将子元素的positon属性设置为relative,使其脱离流。
position:relative;