以下是关于“背景透明文字不透明的最佳方法兼容IE(以背景黑色透明度0.5为例)”的攻略:
使用CSS3的RGBA属性可以非常方便地设置背景颜色的透明度。RGBA属性由红、绿、蓝三个色值和一个透明度值组成,它们的取值范围均是0-255,透明度值则是0-1之间的小数,如下所示:
background-color: rgba(0,0,0,0.5); /* 背景为黑色,透明度为50% */
color: #fff; /* 文字为白色 */
如果要兼容IE浏览器,可以使用IE专有的filter
属性,实现同样的效果。具体代码如下:
background-color: #000; /* IE下使用纯黑色作为背景 */
background-color: rgba(0,0,0,.5); /* 背景为黑色,透明度为50% */
color: #fff; /* 文字为白色 */
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#80000000,endColorstr=#80000000); /* IE6-9下使用滤镜实现透明度 */
zoom: 1; /* 解决IE6上的bug */
上述代码中的filter
属性使用了一项名为渐变滤镜(gradient filter)的特性来实现透明效果,startColorstr
和endColorstr
参数分别表示滤镜的起始颜色和结束颜色,值为ARGB格式的16进制数,其中前两位表示透明度,后六位表示RGB颜色值。
使用伪元素可以在不添加额外HTML结构的情况下实现背景透明文字不透明的效果。基本思路是为元素添加一个before
伪元素,并设置其content
属性为空,在其内部添加一个span
元素,用来显示文字。然后给before
伪元素设置一个背景色和透明度,再设置z-index
为-1,这样文字就会显示在背景上方,从而实现不透明的效果。具体代码如下:
div {
position: relative;
z-index: 1;
color: #fff; /* 文字为白色 */
}
div:before {
content: "";
display: block;
position: absolute;
background-color: #000; /* 背景为黑色 */
opacity: 0.5; /* 透明度为50% */
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: -1;
}
div span {
position: relative;
z-index: 2;
}
这种方法同样可以兼容IE浏览器。具体代码如下:
div {
position: relative;
z-index: 1;
color: #fff; /* 文字为白色 */
}
div:before {
content: "";
display: block;
position: absolute;
background-color: #000; /* 背景为黑色 */
opacity: 0.5; /* 透明度为50% */
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: -1;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#80000000,endColorstr=#80000000); /* IE6-9下使用滤镜实现透明度 */
zoom: 1; /* 解决IE6上的bug */
}
div span {
position: relative;
z-index: 2;
}
上述代码中的before
伪元素使用了与CSS3的RGBA属性类似的方法来设置背景色的透明度。IE浏览器下同样使用了渐变滤镜的方式来设置透明度。