如何重置或覆盖IE CSS过滤器?


89

我正在使用专有的MS'filter'属性尝试创建与CSS3文本阴影和框阴影相当的丑陋;

直到遇到这个问题,我实际上都做得很好。看起来当我将过滤器应用于另一个div内的div时,该div也有一个过滤器,过滤效果最终组合在子对象上。

我试过使用filter:none; 进行重置,但没有喜悦。我还尝试了语法的不同变体,即“ -ms-filter:'progid:... Glow()'“,” filter:progid:... Glow()“,” filter:Glow()“等等。

在IE8中测试


8
这对我filter:;
有用

1
过滤:; 不适用于lessphp CSS预处理器,过滤器:-; 虽然。
David Meister 2012年

使用filter: ;。我猜这将迫使IE一起删除所有属性,因为它不是有效值。
Bhumi Singhal

3
使用SCSS时,我不得不filter:none;避免语法错误。
Nic Barbier 2013年

Answers:


95

启用了 boolean属性,您可以为其设置falsetrue http://msdn.microsoft.com/en-us/library/ms532997%28v=vs.85%29.aspx

例:

-ms-filter: "progid:DXImageTransform.Microsoft.gradient(enabled=false)";

1
谢谢!这对我两个有用。我有一个讨厌的背景风格,无论我多么努力,都不会消失,也找不到它。
racl101 2012年

谢谢!按钮的渐变滤镜效果不好,然后某些按钮带有背景图像-滤镜覆盖图像...
Adam

像魅力一样工作!谢谢!
博格丹

20

-ms-filter属性是非标准的,特定于浏览器的CSS条目,因此要求其参数用引号引起来。因此,-ms-filter:“ none”可以正常工作。



6

通过将孩子定位为绝对或亲戚,我取得了一些成功。但是,这似乎没有更早起作用,所以一旦我变得更复杂,它可能会再次中断

我认为,一旦父级应用了过滤器,所有的子级本质上就会在内部成为Directx曲面。您仍然可以选择文本,但是会滞后。我认为文本选择是一种技巧,会使每个字母分开。这是一个糟糕的烂摊子,在很大程度上解释了为什么一般的浏览器,尤其是过滤器是如此的bug。


6

如果您使用的是HTML5,则可能需要遵循使用方法

<!doctype html>
<!--[if lt IE 7 ]> <html lang="en" class="ie6 oldie"> <![endif]-->
<!--[if IE 7 ]>    <html lang="en" class="ie7 oldie"> <![endif]-->
<!--[if IE 8 ]>    <html lang="en" class="ie8 oldie"> <![endif]-->
<!--[if IE 9 ]>    <html lang="en" class="ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!-->
<html lang="en" class="gtie9 modern">
<!--<![endif]-->

在CSS中使用类似以下内容的代码:

.ie9 .element {filter: none; }


0

我发现最好的方法是display:inline-block(将white-space:nowrap应用于容器)。但这似乎不适用于IE7和更低版本

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.