IE8忽略"过滤"CSS样式

Sim*_*mon 1 css filter internet-explorer-8

我有一个页面使用AlphaImageLoaderIE8 的CSS过滤器,如下所示:

filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src ='/ images/thing.png',sizingMethod ='scale');

在我的测试IE8(Windows XP,出厂设置)中,一切都很好.然而,客户端收到了声称也在使用IE8的人的截图,看起来浏览器完全忽略了该filter指令.通过条件注释加载的IE特定样式表中的所有其他样式似乎都有效.IE或Windows中是否有任何设置会导致此问题?

谢谢,西蒙

Spu*_*ley 6

IE8替换filter-ms-filter.

如果要支持所有版本的IE,则需要提供这两种样式.

语法-ms-filter略有不同filter:

  • 现在使用完整progid字符串指定所有过滤器(根据您的示例,但以前可以使用较短的语法指定某些过滤器).

  • -ms-filter必须用引号括起来.这是为了防止它成为无效的CSS语法(因为它在progidCSS无效之后包含一个冒号;在已知的情况下,已知会导致其他浏览器中的解析错误阻止它们正确读取其余的CSS文件).

因此,在您的示例中,您需要以下样式:

.myelement {
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/thing.png', sizingMethod='scale');
    -ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/thing.png', sizingMethod='scale')";
}
Run Code Online (Sandbox Code Playgroud)

请注意,IE9已经放弃了对两者的支持,filter并且-ms-filter支持等效的标准CSS3属性.

希望有所帮助.