6

我希望为 IE 9 使用一些条件样式 - 但我希望在我的主样式表中包含这些条件 - 不使用第二个样式表或在 HTML 页面中引用它。目前,我将这段代码放在 HTML 页面中,因为它覆盖了主样式表中的其他样式:

<!--[if IE 9]>
<style>
nav li a:hover {
    text-decoration: underline;
    color: black;
}
nav .four a:hover{
    color:white;
}
</style>
<![endif]-->

但我想在 CSS 表中包含这些条件,以便它们都位于一个位置,我不必在每个页面中重复代码。我也宁愿避免只为 IE 9 提供单独的 CSS - 我已经为 IE 7-8 提供了一个。我在样式表中试过这个:

<!--[if IE 9]>

nav li a:hover {
    text-decoration: underline;
    color: black;
}
nav .four a:hover{
    color:white;
}
<![endif]-->

上面的代码是针对我的 IE 9 的(它是针对IE 9 不支持文本阴影nav bar的修复)。nav bar

有没有办法在 CSS 样式表中做到这一点?

4

3 回答 3

6

条件注释适用于 HTML,但您可以在 CSS 中利用它。HTML5Boilerplate 通过向 html 元素添加一个类来实现这一点 (https://github.com/h5bp/html5-boilerplate/blob/master/index.html)

<!DOCTYPE html>
<!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]>         <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->

这为您提供了一个仅可用于针对 IE 的钩子:

.lt-ie8 .my-style { color: red }
于 2012-11-16T04:11:24.537 回答
0

这在标准上是不可能的。IE 中的条件块只能在 HTML 网页中使用。

然而,浏览器供应商一直对他们的 css 解析器很有趣,包括微软。所以有一些我们称之为css hacks的东西可以用来让一些解析器解释一些规则,但不能被其他解析器解释。

请不要认为这是应该尽可能避免的事情:样式表将不再符合 w3c,而且它绝对不是一个“干净”的解决方案(更像是在 IE6 的黑暗统治期间常见的肮脏的遗留变通办法)。

于 2012-11-16T03:58:57.960 回答
0

以下是执行您所要求的所有方法。6 号很可能是你的追求。只需将 9 更改为 11。http://www.visibilityinherit.com/code/target-ie.php

于 2012-11-16T04:56:17.877 回答