我有一个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>
中使用条件标签,但这不是我真正需要的。我需要能够在整个地方使用它。
答案 0 :(得分:0)
您希望避免在<head>
中使用条件标记来提供IE特定的CSS(据我理解您的陈述)。我能想到的两个想法是:
不确定您是否也反对using conditional comments to set a class on the html
or body
tags?或者禁止,使用javascript设置类似的类。然后你可以预设mixin来生成...
.ie9 .yourSelectorUsingtheMixin { filter: none; ms-filter: none; }
...使用background-rgba
mixin在主条目后面。
This post注意到IE9的黑客攻击,它将@media
与真正的黑客机动\0/
结合起来,形式如下:
@media all and (min-width:0) {
.yourSelectorUsingtheMixin {
filter: none \0/;
-ms-filter: none \0/;
}
}
答案 1 :(得分:0)
这最终为我工作,基本上关闭了IE9的过滤器。我对这个解决方案不满意,但现在必须做。
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(enabled=false)" !important; /* ie9 requires quotes */