如果浏览器是IE,则应用CSS规则

时间:2010-08-22 15:16:49

标签: css internet-explorer

  

可能重复:
  How do I do IE conditionals in CSS?

我如何才能将以下规则应用于IE?

.abc {

float:left;
height:0;
margin:0 10px;
width:0;

/*Apply these rules for IE only*/
position:absolute;
left:30;
top:-10;
/*Apply these rules for IE only*/
}

4 个答案:

答案 0 :(得分:29)

在IE9之前的浏览器中,这是通过conditional comments完成的。

<!--[if IE]>
<style type="text/css">
  IE specific CSS rules go here
</style>
<![endif]-->

答案 1 :(得分:23)

避免加载多个CSS文件或拥有内联CSS的好方法是根据Internet Explorer的版本将类交给body标签。如果你只需要一般的IE黑客,你可以做这样的事情,但它可以扩展为特定版本:

<!--[if IE ]><body class="ie"><![endif]-->
<!--[if !IE]>--><body><!--<![endif]-->

现在在您的css代码中,您可以执行以下操作:

.ie .abc {
  position:absolute;
  left:30;
  top:-10;
}

这也可以保证您的CSS文件有效,因为您不必使用脏(和无效)CSS黑客。

答案 2 :(得分:18)

快速的方法是使用以下内容,即你想要集中注意力(检查注释),在你的css文件里面(margin-top,设置你喜欢的任何css属性):

margin-top: 10px\9; /*It will apply to all ie from 8 and below */
*margin-top: 10px; /*It will apply to ie 7 and below */
_margin-top: 10px; /*It will apply to ie 6 and below*/

更好的方法是检查用户代理或条件if,以避免在其他浏览器中加载不必要的CSS。

答案 3 :(得分:5)

我更喜欢使用单独的文件来表示规则,如前所述。

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

在其内部,您可以为不同版本设置规则,即使用:

.abc {...} /* ALL MSIE */
*html *.abc {...} /* MSIE 6 */
*:first-child+html .abc {...} /* MSIE 7 */