仅通过CSS定位IE9

时间:2011-07-11 18:04:45

标签: html css internet-explorer-9 stylesheet css-hack

只是想知道这些IE黑客入侵我的技巧

"\9" - for IE8 and below.
"*" - for IE7 and below.
"_" - for IE6.

即。比如

body { 
    border:2px solid blue;
    border:2px solid yellow \9;
    *border:2px solid green;
    _border:2px solid orange;
}

是否有人对IE9有这样的攻击?即我只是想通过CSS来攻击IE9?

5 个答案:

答案 0 :(得分:42)

可怕,但应该有效:

body { 
    border:2px solid blue;
    border:2px solid yellow \9;
    *border:2px solid green;
    _border:2px solid orange;
}
body:nth-child(n) {border:1px solid purple \9; /*Should target IE9 only - not fully tested.*/}

答案 1 :(得分:29)

我建议使用condcoms来提供IE9 css文件或者使用条件html类,类似于:

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

答案 2 :(得分:4)

在此地址:http://www.impressivewebs.com/ie10-css-hacks/ 我发现了一个仅针对IE10(及以下)的媒体查询:

@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {  
   /* IE10-specific styles go here */  
}

答案 3 :(得分:3)

IE9非常符合标准。你不应该破解它。

此外,您应该使用IE conditional comments加载不同的样式。对于IE 9,您可以这样做:

<!--[if IE 9]>
    <!-- conditional content goes here -->
<![endif]-->

答案 4 :(得分:3)

正如一些评论中所述,有时候条件HTML不适用于特定情况,特别是如果您无法修改页面代码本身。所以这是一个解决方法:

基本风格

.test{color:red;}

特定于浏览器的覆盖

IE&lt; 8:html >/**/body .test { color: green; }
IE 9::root .test{color:green \ ;}
IE 8和9:.test{color:green \ ;}
IE 9和Opera :root .test {color: green\0;}

注释

以上不适用于backgroundfont-*,任何\0\9黑客通常都不稳定。有关CSS黑客的完整列表,请参阅http://mynthon.net/howto/-/webdev/CSS-big-list-of-css-hacks.txt