如何覆盖过滤器:CSS 中的无

gar*_*dni 4 html css filter internet-explorer-7

我有一个适用于IE7 的特定样式表filter:none;我无权访问此文件,因此不能简单地删除该行。我需要通过CSS以某种方式覆盖它,以忽略filter:none;设置。

我试过使用filter:; filter: -;andfilter: !important;这应该会导致过滤器属性无效,但过滤器仍在设置中。

是否可以在不删除 IE7 特定样式表中的行或使用 javascript/jquery 的情况下执行此操作?


回答:

为了解决我的具体问题,不可能 像我要求的那样简单地filternull等效的方法覆盖。正如下面的答案所暗示的那样,必须通过将过滤器直接应用于我想要覆盖的位置来覆盖它。

IE7 特定样式表:

.div.example { 
    filter:none;
}
Run Code Online (Sandbox Code Playgroud)

被覆盖: 通用样式表:

.div.example {
    filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#7F000000,endColorstr=#7F000000);
}
Run Code Online (Sandbox Code Playgroud)

Jac*_*uck 6

这个答案中提取

Microsoft 引入了 -ms-filter 以使 Internet Explorer 更符合标准(CSS 2.1 要求供应商扩展具有供应商前缀)。由于原始过滤器属性的语法不符合 CSS 2.1,IE8+ 要求将 -ms-filter 属性的值括在引号中。

-ms-filter: "progid:DXImageTransform.Microsoft.gradient(enabled=false)" /* IE 8+ */;
filter: none !important; /* IE 7 and the rest of the world */  
Run Code Online (Sandbox Code Playgroud)

正如你所说,你需要覆盖现有的样式,所以追加 !important

-ms-filter: "progid:DXImageTransform.Microsoft.gradient(enabled=false) !important";
Run Code Online (Sandbox Code Playgroud)

如果你想知道,报价ARE需要这种微软(MS)供应商名称。如您所见,此用例使用 MS 的渐变,将其插入您希望覆盖的任何过滤器属性。