0

我有这种CSS风格:

    background:#000;
    background:rgba(0,0,0,0.7);
    background: transparent;
    -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#B2000000,endColorstr=#B2000000)"; /* IE8 */    
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#B2000000,endColorstr=#B2000000);   /* IE6 & 7 */      
    zoom: 1;

它在 Internet Explorer 中运行良好,但我必须保持背景:透明;风格。如果我保留它,Mozilla 会使我的背景透明

有什么想法吗?

4

2 回答 2

5

学习使用 IE 条件处理 IE 怪癖:

http://www.quirksmode.org/css/condcom.html

<style type="text/css">
.stuff {
  background:#000;
  background:rgba(0,0,0,0.7);
}
</style>

<!--[if IE]>
<style type="text/css">
.stuff {
  background: transparent;
  -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#B2000000,endColorstr=#B2000000)"; /* IE8 */    
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#B2000000,endColorstr=#B2000000);   /* IE6 & 7 */
  zoom: 1;
}
</style>
<![endif]-->

<div class="stuff">Stuff</div>

jsfiddle 演示:http: //jsfiddle.net/cYtKJ/1/

编辑

您还可以使用它来导入不同的样式文件:

<link rel="stylesheet" type="text/css" href="style.css">
<!--[if IE]>
<link rel="stylesheet" type="text/css" href="style-ie.css">
<![endif]-->

如果 style-ie.css 覆盖其他 css 命令,您只需小心将其放在最后。

于 2011-04-16T16:54:52.153 回答
0
    background: transparent;
    background:rgba(0,0,0,0.7);
    -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#B2000000,endColorstr=#B2000000)"; /* IE8 */    
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#B2000000,endColorstr=#B2000000);   /* IE6 & 7 */      
    zoom: 1;

问题解决了。但是,IE9 中可能存在问题,因为它也支持 RGBA。因此,最好的解决方案可能是在非 RGBA 浏览器中使用条件注释或仅使用纯色回退。

于 2011-04-17T13:40:17.687 回答