为什么我的IE条件语句在样式标签内不起作用?

时间:2009-11-03 20:04:58

标签: html css conditional

我正在尝试使用IE特定的条件语句来根据浏览器类型更改类设置。我觉得他们可以做到这一点,但我似乎无法让它发挥作用。

下面是一个简单的例子,如果浏览器是IE,文本应该是蓝色,否则文本应该保持红色。

“浏览器是IE”身体中的声明工作正常,如果我打开firefox它不存在,Internet Explorer ..它是。

我做错了什么?

<html>
<head>
<style type="text/css">
.class{color:red;}
<!--[if IE]>
.class{color:blue;}
<![endif]-->
</head>
</style>
<body>
<!--[if IE]>
This browser is IE
<![endif]-->
<p class="class">Color changing text based on browser</p>
</body>
</html>

4 个答案:

答案 0 :(得分:9)

首先,您的代码不起作用 - 您应该将css读为.color而不是.class

其次条件语句在css中不起作用。因此,编写代码使得条件是围绕IE特定样式。

<html>
<head>  
    <style type="text/css">
        .color{ color:red; }
    </style>

    <!--[if IE]>
    <style type="text/css">
        .color{ color:blue; }
    </style>
    <![endif]-->
</head>

<body>
    <!--[if IE]>
    This browser is IE
    <![endif]-->
    <p class="color">Color changing text based on browser</p>
</body>
</html>

答案 1 :(得分:2)

显然他们不能在样式标签内工作。 (见这里:http://reference.sitepoint.com/css/conditionalcomments

看来你可以在head标签中使用它们,并且如果它是IE则包含一个外部CSS文件,如果是另一个浏览器则隐藏该css文件。

答案 2 :(得分:1)

如果'hack'针对IE6或更早版本,您也可以按照以下方式执行:

.color {
    color: red;
}

* html .color {
    color: blue;
}

请注意“* html”前缀。这仅由IE6及更早版本解析。您还可以使用“!important”声明。 IE6及更早版本将忽略特定行。

.color {
    color: red !important;
    color: blue;
}

如果你有相对较多的,更好的做法是使用条件语句加载一个额外的CSS样式表文件。

答案 3 :(得分:0)

你也可以做颜色:红色; _color:蓝色;