我有一个sass混入,它允许我定义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>中使用条件标记,但这并不是我真正需要的。我需要能够在所有地方使用它。
发布于 2013-01-07 12:04:28
这就是最终对我起作用的方法,基本上关闭了IE9的过滤器。我对这个解决方案并不满意,但现在只能这样了。
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(enabled=false)" !important; /* ie9 requires quotes */发布于 2013-01-06 11:11:46
你想要避免在<head>中使用条件标签来给它提供IE特定的CSS (正如我理解你的说法)。除此之外,我还能想到两个想法:
IE9类
不确定你是否也反对using conditional comments to set a class on the html or body tags?或者使用javascript来设置一个类似的类。然后你可以预置混音来生成一个...
.ie9 .yourSelectorUsingtheMixin { filter: none; ms-filter: none; }..。在主条目之后使用background-rgba混合。
@Media Hack
This post指出了一个针对IE9的黑客攻击,它将@media与真正的黑客策略\0/结合在一起,其形式如下:
@media all and (min-width:0) {
.yourSelectorUsingtheMixin {
filter: none \0/;
-ms-filter: none \0/;
}
}https://stackoverflow.com/questions/14176021
复制相似问题