蘑菇小姐会开花

css实现背景透明文字不透明

css3 rgba()

rgba()就可以实现了,r代表红色red,g代表绿色green,b代表蓝色blue,a代表透明度alpha。
但是IE9以下好像就不支持rgba()函数了。

IE9以下

采用了IE渐变滤镜

1
filter:progid:DXImageTransform.Microsoft.Gradient(startColorStr=#AARRGGBB,endColorStr=#AARRGGBB)

startColorStr设置或检索色彩渐变的开始颜色和透明度,格式为#AARRGGBB,AA、RR、GG、BB
为十六进制正整数,取值范围为00-FF,AA指定透明度,00是完全透明,FF是完全不透明。超出取值范围的值将被恢复为默认值。
2位透明度的换算方法: x=alpha*255,讲计算的结果x转换成十六进制即可。
js换算16进制方法:x.toString(16)

举个栗子:0.25的透明度

1
2
var a = 0.25*255 = 63.75 ~= 64
a.toString(16) = 40

endColorStr设置或检索色彩渐变的结束颜色和透明度。

rgba()+filter 兼容

1
2
background: rgba(0,0,0,0.5);
filter:progid:DXImageTransform.Microsoft.Gradient(startColorStr=#7F000000,endColorStr=#7F000000)

可以使所有主流浏览器元素实现50%透明的黑色背景。

opacity+filter

设置元素的不透明度,这种不透明属性会让子元素也跟着半透明(即背景文字都透明),所以一般用于调整图片或者模块的整体不透明度。

1
2
opacity: 0.5;
filter: Alpha(opacity=50); //兼容IE9以下版本

在IE6、7、8中使用filter属性,设置子元素为相对定位,可以让父元素透明,子元素不透明。

1
2
<!--只支持IE6、7、8-->
@media \0screen\,screen\9 {...}

更多请参考

关于IE中CSS-filter滤镜小知识
ie8-hack(兼容IE6/7/8)

坚持原创技术分享,您的支持将鼓励我继续创作!