如何仅为Internet Explorer定义CSS样式?

时间:2012-12-10 02:03:23

标签: css internet-explorer stylesheet

我遇到过:

/* for firefox only */
@-moz-document url-prefix() {
#main_menu ul ul {
top: 37px;
}
}

只能用于定义firefox样式,是否有类似的替代方法用于定义仅与IE一起使用的样式?或者“条件样式表”方法在这里被认为是最佳实践吗?

http://css-tricks.com/how-to-create-an-ie-only-stylesheet/

在这个例子中我只想改变下拉css菜单的上边距,所以只需要调整几个样式即。

谢谢你。

ps我遇到过:

Setting CSS for IE only?

我正试图把:

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

在头部然后在css中定义:

.ie#main_menu ul ul {
top: 50px !important;
}

但我看不到IE的任何变化。

3 个答案:

答案 0 :(得分:2)

您应该在常规CSS之后将此代码放在 HTML 文件中。现在,你将有另一个CSS文件(ie.css)将应用于浏览器Greater Then(和Equal)IE6和Later IE8(和Equal)。

<!--[if (gte IE 6)&(lte IE 8)]>
  <link rel="stylesheet" href="css/ie8.css" media="screen,all" />
<![endif]-->

或者您可以在原始CSS文件中使用“star property hack”。在CSS规则前放置一个星标,您将定位IE7及更低版本。例如:

div{
  top:20px;
  *top:10px;
}

答案 1 :(得分:0)

您是使用REAL版本的IE进行测试还是在更改Developer Tools中的版本?例如,IE中的开发人员工具几乎从未显示出在IE 8中应该是什么样子的准确表示。

答案 2 :(得分:0)

您是否检查过您的样式规则是否在没有条件的情况下应用?可能你的CSS选择器有问题。我相信你的CSS选择器应该是“.ie #main_menu ul ul”而不是你拥有的。注意“.ie”之后的空格

.ie #main_menu ul ul {
    top: 50px !important;
}