仅为IE设置CSS?

时间:2012-11-13 12:45:38

标签: html css internet-explorer browser

我有一个简单的div,边框宽2px,绝对定位隐藏,直到其父元素悬停在上面。由于IEs框模型,所以div的位置在IE中有点偏,但不是任何其他浏览器。我不想为IE添加一个完全独立的样式表,我只想在浏览者使用IE时修改类本身。

那么如何修改仅为IE添加特定类?

4 个答案:

答案 0 :(得分:2)

您需要使用名为条件评论的内容。这些只能在IE中工作(其他浏览器会将它们视为注释),因此它们只是一种很好的方式来定位IE。

示例 - 如果您想在IE6中完成某些操作,请使用以下命令:

<!--[if IE 6]>
Special instructions for IE 6 here
<![endif]--

要了解详情,请访问official MSDN source regarding conditional comments

答案 1 :(得分:1)

您可以在html(或其他)文件中添加以下条件片段。之后,您可以在ie_stylesheet.css

中定义新的类属性
  <!--[if IE]>
    <link type="text/css" rel="stylesheet" media="all" href="ie_stylesheet.css"/>
  <![endif]-->

我认为有足够的解释here

答案 2 :(得分:0)

您可以通过在样式表的开头添加CSS重置来尝试避免IE样式表。请查看以下内容:http://www.cssreset.com/scripts/html5-doctor-css-reset-stylesheet/

重置应有助于使元素在所有浏览器中的行为相同。

答案 3 :(得分:0)

我发现conditional comments的这种用法是一种非常优雅的标记<html>标记的方法,可以在CSS和JS中使用这些类:

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

作为一个人为的例子,如果您想要将IE6作为目标,使所有链接变为红色,那么您将使用这样的特殊性:

.lt-ie7 a {
  color: red;
}

无需单独的样式表。

来源:Conditional stylesheets vs CSS hacks? Answer: Neither!