目标IE9或IE8,但不是两者都使用CSS

时间:2011-05-02 01:18:06

标签: css internet-explorer css-hack

我知道不应该这样做,但我现在只想快速修复,这将给我时间找到适当的解决方案。

如何使用CSS单独定位IE8,因为我尝试添加\9,例如:

margin:100px\9;

然而,它也影响IE9,我不希望这样,因为在IE9上整个网站看起来很好。

4 个答案:

答案 0 :(得分:18)

来自HTML5 Boilerplate,最初来自Paul Irish

< html> 标记更改为:

<!--[if lt IE 7 ]> <html lang="en" class="ie6"> <![endif]-->
<!--[if IE 7 ]>    <html lang="en" class="ie7"> <![endif]-->
<!--[if IE 8 ]>    <html lang="en" class="ie8"> <![endif]-->
<!--[if IE 9 ]>    <html lang="en" class="ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html lang="en"> <!--<![endif]-->

然后IE8会将.ie8类添加到html标记中。所有其他版本的IE也是如此。然后你可以这样做:

.ie8 {
    margin:100px;
}

修改:删除 no-js 类,并将 lang =“”属性更新为您的语言。谢谢,没有眼皮。

答案 1 :(得分:9)

这应该仅适用于IE9(也可能是新版本):

:root #element-id {
  margin: 400px\9;
}

这是因为在IE9之前的版本中没有实现:root伪类(参见http://msdn.microsoft.com/en-us/library/cc351024%28v=vs.85%29.aspx)。

答案 2 :(得分:3)

您可以使用root功能

:root #element { color:pink \0/IE9; } /* IE9 + IE10pp4 */

仅限IE浏览器

#element {
color:orange;
}
#element {
*color: white;    /* IE6 + 7, doesn't work in IE8/9 as IE7 */
}
#element {
_color: red;     /* IE6 */
}
#element {
color: green\0/IE8+9; /* IE8 + 9 + IE10pp4  */
}
:root #element { color:pink \0/IE9; }  /* IE9 + IE10pp4 */

答案 3 :(得分:1)

有三种方法可以做到这一点,

IE条件评论

IE条件注释可能是最常用于修复特定版本(IE6,IE7,IE8)的IE错误。下面是一些针对不同版本的Internet Explorer的示例代码:

    <!--[if IE 8]> = IE8
    <!--[if lt IE 8]> = IE7 or below
    <!--[if gte IE 8]> = greater than or equal to IE8

<!--[if IE 8]>
<style type="text/css">
    /* css for IE 8 */
</style>
<![endif]-->

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

特定于资源管理器的CSS规则(IE CSS hacks)

另一种选择是声明只能由资源管理器读取的CSS规则。例如,在CSS属性将以IE7为目标之前添加星号(*)或在属性将以IE6为目标之前添加下划线。但是,建议不要使用此方法,因为它们不是有效的CSS语法。

IE8 or below: to write CSS rules specificially to IE8 or below, add a backslash and 9 (\9) at the end before the semicolon.
IE7 or below: add an asterisk (*) before the CSS property.
IE6: add an underscore (_) before the property.

.box {

    background: gray; /* standard */

    background: pink\9; /* IE 8 and below */

    *background: green; /* IE 7 and below */

    _background: blue; /* IE 6 */

}

条件HTML类

由Paul Irish创建的第三个选项是使用IE条件注释将带有IE版本的CSS类添加到HTML标记中。基本上,它检查它是否是IE,然后在html标记中添加一个类。因此,要定位特定的IE版本,只需使用IE类作为父选择器(例如.ie6 .box)。这是一种聪明的方法,它不会导致任何验证错误。

<!--[if lt IE 7 ]> <html class="ie6"> <![endif]-->
<!--[if IE 7 ]> <html class="ie7"> <![endif]-->
<!--[if IE 8 ]> <html class="ie8"> <![endif]-->
<!--[if IE 9 ]> <html class="ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html> <!--<![endif]-->