故障现象:
让IE浏览器支持RGBa的背景色。
解决方案:
RGBa是一种在CSS中声明包含透明效果的颜色的方法,通过RGBa我们可以将一个元素设置为透明,而不会影响其子元素。但是并非所有的浏览器支持RGBa的背景色,其中用户颇多的老版本IE浏览器就不支持,好在IE浏览器支持条件注释,我们可以抛弃RGB并使用IE浏览器的一个私有CSS滤镜来实现同样的效果。 <!--[if IE]>
< style type="text/css">
.color-block {
background:transparent;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#4B7D0000,endColorstr=#4B7D0000);
zoom: 1;
}
< /style>
< ![endif]--> DXImageTransform.Microsoft.gradient滤镜里的startColorstr参数值是#AARRGGBB形式的,其中的AA是代表不透明度的十六进制,00表示完全透明,FF就是全不透明,化成十进制的范围就是0~255,剩下的RRGGBB就是颜色的十六进制代码。例子中background: rgba(125, 0, 0, .3);表示的是30%不透明度的红色背景。如何把30%的不透明度转换成十六制呢?很简单,先计算#AA的的十进制x,x/255 = 3/10,解得x=3*255/10,然后再把x换算成十六进制,约等于4B。 RGBa颜色还可以用于border,不过,不同的浏览器对于border的RGBa支持不太一样,不过唯一的不同是,Firefox在border的拐角处会出现叠加,比如透明度是0.4,那么在Firefox中,四个角的透明度会变成0.8,而支持RGBa的非FF浏览器不会出现这种情况。 |