IE7中的CSS过滤器属性不会关闭

时间:2010-10-12 21:15:25

标签: css internet-explorer-7 filter

我使用ms专有的css属性“filter”来控制元素的opactiy。

#square2
{
    filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=50)";
    zoom:1;
    padding:10px;
    border:solid 5px #0cc;
    height:200px;
    width:400px;
    background-color:#cc0;
    color:#c0c;
    font-size:2em;
}  

问题在IE7中突出显示(在IE7浏览器模式下运行IE8)。解析器不会将filter属性视为“关闭”。因此,filter属性包含超过它的所有其他属性。

我想在此时发布一个屏幕截图,但不允许使用新手!

我知道我可以简单地将filter属性移动到css选择器的末尾,但这是问题的简化版本 - 这不是一个现实的解决方案。

当它跟着另一个css选择器时,问题会恶化。新的css选择器本身会被上一个选择器的filter属性捕获。然后,新选择器根本不起作用,就好像它不存在一样。

我只是想让IE7识别过滤器属性的结尾。

非常感谢您的帮助。

由于

3 个答案:

答案 0 :(得分:2)

您不在CSS声明中添加引号。刚

filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50);

来源:http://msdn.microsoft.com/en-us/library/ms532967(VS.85).aspx

答案 1 :(得分:1)

使用alpha过滤器的简化形式避免引用vs-no-quotes IE7 / IE8语法问题:

filter: alpha(opacity=50);

答案 2 :(得分:0)

Alpha过滤器只是为了简化问题(我实际上正在使用Matrix过滤器),因此修复不适用。

引号/无引号修复也不起作用,所以我想出的答案是从样式表中删除过滤器样式并将其放在母版页上的样式标记中。这允许我使用过滤器属性来多重选择器 - 每个都在页面上的自己的样式标签中。

<html>
<head>
<style type="text/css">
      #square2{padding:10px;filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=50)";}
</style>
</head>
</html>

这使IE7解析器识别属性的结尾,但是在不止一个地方维护样式的缺点。

尼克