0

我正在尝试通过浏览器特定的 CSS hack 来定位 IE 8 和 9,如此处所示。但是,我使用的是 SASS(特别是 WebCompiler Visual Studio 扩展),它会编译分号前的尾随空格。因此

.class{ display: none \ ;}

变成

.class { display: none \;}

并打破了黑客。有没有办法解决这个问题?

4

2 回答 2

2

如果你需要一个空格,你可以连接一个空字符串。

萨斯:

.class{ display: none \ +'';}

输出:

.class {
  display: none \ ;
}
于 2016-08-01T06:48:09.850 回答
1

我建议在 html 中使用条件注释作为目标,如下所示:

<!--[if IE 8]>            <html class="ie8"> <![endif]-->
<!--[if IE 9]>            <html class="ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]> <html>             <![endif]-->

在 CSS 中:

.class {display: block;}
.ie8 .class {display: none;}
.ie9 .class {display: none;}

但是如果你想保持一个更干净的 html 和更小的 css,你可以使用一些 javascript lib 来定位特定的浏览器,比如DetectJS将浏览器名称和版本作为类放在 html 标记中,为每个浏览器生成单独的样式表,而不是调用它们在你的脑海中:

<!--[if IE 8]>
    <link rel="stylesheet" type="text/css" href="ie8.css" />
<![endif]-->

<!--[if IE 9]>
    <link rel="stylesheet" type="text/css" href="ie9.css" />
<![endif]-->

请记住,IE10+ 不接受条件注释

于 2016-07-30T17:35:38.983 回答