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

时间:2009-11-20 03:26:54

标签: css filter internet-explorer

我正在使用专有的MS'过滤器'属性来尝试创建一个非丑陋的等效于css3 text-shadow和box-shadow;

在我遇到这个问题之前,我确实做得非常好。看起来当我将一个过滤器应用于另一个也有过滤器的div中的div时,过滤器效果最终会被合并在子对象上。

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

在IE8中进行测试

7 个答案:

答案 0 :(得分:95)

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

示例:

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

答案 1 :(得分:20)

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

答案 2 :(得分:16)

试试这个:

过滤器: - ;

答案 3 :(得分:6)

通过将孩子定位为绝对或亲戚,我取得了一些成功。这似乎没有提前工作,所以一旦我变得更复杂,它可能会再次破裂

我认为一旦父母有一个过滤器应用它的所有孩子基本上在内部成为directx表面。您仍然可以选择文本,但它会滞后。我认为文本选择是一个黑客,它使每个字母成为一个单独的表面。这是一个糟糕的混乱,它解释了为什么一般的浏览器和过滤器特别错误的原因。

答案 4 :(得分: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; }

答案 5 :(得分:1)

您是否尝试过enable/disable过滤器?

答案 6 :(得分:0)

我发现最好的方法是display:inline-block(将white-space:nowrap应用到容器中)。但它似乎与IE7和较低的

有关