“如果不是IE7”的CSS条件语句不起作用

时间:2013-09-11 18:35:13

标签: html css internet-explorer

<!--[if !(IE 7)]>
    <link href="/assets/css/fixed.css" rel="stylesheet" />
<![endif]-->

这不起作用。我正在使用Chrome,它没有在我引用的样式表中找到任何内容。我正在尝试添加一个样式表,除了IE 7之外,所有内容都被加载,因为我正在尝试实现IE 7不支持的一些UI更改。

有人能指出我在这里做错了吗?

4 个答案:

答案 0 :(得分:5)

这些仅适用于IE。所以你的样式表应该适用于IE8 +和IE6-,而不是IE7。所有其他浏览器只是将其视为代码注释而忽略它,因此您无法在Chrome中获取样式表。

我还应该补充一点,这不是CSS,而是HTML。

<!-- --> 

这些(上面)是html评论。渲染引擎会忽略其中的任何内容。另一方面,IE有“特殊”逻辑来寻找这些“IE'版本'风格的评论。这些存在是因为IE的旧版本通常与世界其他地方不兼容! :)

我想补充的另一件事是,现在通常不会考虑(抱歉,没有参考)编写浏览器检测的优良做法,而是进行特征检测。

有一些库可以帮助您编写跨浏览器兼容的Css和Js。例如:CSS3PIEjQuery

答案 1 :(得分:1)

尝试没有括号。像:

<!--[if !IE 7]><!-->
<h1>You are NOT using IE7</h1>
<!--<![endif]-->

(你的代码也应该正常工作)

答案 2 :(得分:1)

使用类似的东西:

<!--[if IE 7 ]><link href="#" /><![endif]-->
<!--[if !IE7]>--><link href="#" /><!--<![endif]-->

您的示例,Chrome仅查看评论,它不解析即条件html。

答案 3 :(得分:0)

尝试

<!--[if !IE7]>
  <link href="css/style.css" rel="stylesheet" media="screen">
<![endif]-->

或者如果大于IE7,则使用默认样式表

<!--[if gte IE 7]>
  <link href="css/style.css" rel="stylesheet" media="screen">
<![endif]-->

但我认为最好编写单独的IE7样式。