【问题标题】:How to override a filter:none in CSS如何覆盖过滤器:CSS中的无
【发布时间】:2014-07-07 12:18:16
【问题描述】:

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

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

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


回答:

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

IE7 特定样式表:

.div.example { 
    filter:none;
}

被以下内容覆盖: 通用样式表:

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

【问题讨论】:

  • 你试过这个filter: initial;吗?
  • 看看这个答案,它可能对你有帮助:stackoverflow.com/questions/12780511/…
  • @prakash2089 刚试过,和上面一样,filter:none 还在申请中
  • 不可能。您需要将 filter 设置为您想要的样子,无法将其设置为“filter: none 之前的样子”。
  • @thirtydot 你是对的

标签: html css filter internet-explorer-7


【解决方案1】:

摘自this answer

微软引入 -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 */  

如您所说,您需要覆盖现有样式,因此追加!important

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

如果您想知道,此 microsoft (-ms) 供应商前缀需要引用 ARE。如您所见,此用例使用 MS 的渐变,将其插入您希望覆盖的任何过滤器属性。

【讨论】:

    【解决方案2】:

    IE6IE7 中,过滤器仅适用于设置了 hasLayout 属性的元素。要删除 hasLayout,您可以通过添加以下属性和值之一的元素:

        position: static;
        float: none;
        width: auto; 
        height: auto; 
        overflow: visible;
        writing-mode: lr-tb | rl-tb | bt-rl;
        zoom: normal.
    

    【讨论】:

      猜你喜欢
      • 2010-12-18
      • 1970-01-01
      • 2011-02-09
      • 1970-01-01
      • 1970-01-01
      • 2011-01-13
      • 2015-05-23
      • 2012-07-21
      • 1970-01-01
      相关资源
      最近更新 更多