IE8及以下MS滤波器与RGBa不同

时间:2013-12-07 22:09:15

标签: css internet-explorer internet-explorer-8 internet-explorer-7

对于现代浏览器,我使用background: rgba(0, 0, 0, 0.75);作为完整的视口div叠加。

它不能用于IE8及以下版本,所以我搜索了一个解决方案,我在css3tricks上找到了这个,但稍微调整了一下这些值:

filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000,endColorstr=#99000000);

它有效,但它不等同于background: rgba(0, 0, 0, 0.75);。 < - 这一个看起来比另一个亮。但是我已经将MS滤镜的不透明度设置为99%,但它仍然显得更亮。

有人知道我怎么能得到相同的结果吗?

1 个答案:

答案 0 :(得分:2)

引自MSDN http://msdn.microsoft.com/en-us/library/ms532930%28v=vs.85%29.aspx

  

颜色以#AARRGGBB格式表示,其中AA是alpha十六进制值,RR是红色十六进制值,GG是绿色十六进制值,BB是蓝色十六进制值。 alpha值控制对象的不透明度。 alpha值为00是透明的,而FF值是不透明的。

这意味着:

#3f000000 == rgba(0, 0, 0, .25)
#7e000000 == rgba(0, 0, 0, .50)
#bd000000 == rgba(0, 0, 0, .75)

所以下面的CSS应该在IE6,IE7和IE8上产生等效的背景:

background-color: rgba(0, 0, 0, 0.75);
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#bd000000,endColorstr=#bd000000);

您应该将filter属性放在条件CSS中,用于< IE9,否则IE9似乎同时应用这两个属性,结果会变暗。

但是,我建议使用一个小的半透明PNG,其所需的颜色为background-image background-repeat: repeat;,以便在需要时提供更好的浏览器支持。