0

我有一个 sass mixin,可以让我定义 alpha 背景

@mixin background-rgba($r,$g,$b,$a) {

    $color: ie_hex($r,$g,$b,$a);
    $value: unquote("progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=##{$color},endColorstr=##{$color})");

    //ie
    -ms-filter: $value;
    filter: $value;
    zoom: 1;

    background-color: transparent\9;
  // Good browsers.
    background-color: rgba($r,$g,$b,$a);

这适用于 IE 7-8,但过滤器规则正在被 IE9 采用。我意识到我可以在中使用条件标签,<head>但这并不是我真正需要的。我需要能够在所有地方使用它。

4

2 回答 2

0

您希望避免在 中使用条件标签<head>来提供 IE 特定的 CSS(据我了解您的说法)。否则我可以想到两个想法:

IE9 类

不确定您是否也反对使用条件注释在or标记上设置类htmlbody?或者除此之外,使用 javascript 设置一个类似的类。然后你可以预设 mixin 来生成一个...

.ie9 .yourSelectorUsingtheMixin { filter: none; ms-filter: none; }

...在使用background-rgbamixin 的主要条目之后。

@媒体黑客

这篇文章记录了一个针对 IE9 的 hack,它结合@media了一个真正的 hack 操作\0/,其形式如下:

@media all and (min-width:0) {
    .yourSelectorUsingtheMixin { 
       filter: none \0/; 
       -ms-filter: none \0/;
    } 
}
于 2013-01-06T03:11:46.437 回答
0

这最终对我有用,基本上关闭了 IE9 的过滤器。我对这个解决方案不满意,但现在必须这样做。

-ms-filter: "progid:DXImageTransform.Microsoft.gradient(enabled=false)" !important; /* ie9 requires quotes */
于 2013-01-07T04:04:28.350 回答