如何单独为IE9定义特定的CSS规则?

use*_*347 26 css css-hack internet-explorer-9

朋友们,请帮我定义IE9的具体css规则?比如这样

/* IE 6 fix */
* html .twit-post .delete_note a { background-position-y: 2px; }
* html .twit-post .delete_note a:hover { background-position-y: -14px; }
Run Code Online (Sandbox Code Playgroud)

SW4*_*SW4 31

请注意,接受的答案也针对IE10.因此,要获得更完整的列表:

IE 6

* html .ie6 {property:value;}
Run Code Online (Sandbox Code Playgroud)

要么

.ie6 { _property:value;}
Run Code Online (Sandbox Code Playgroud)

IE 7

*+html .ie7 {property:value;}
Run Code Online (Sandbox Code Playgroud)

要么

*:first-child+html .ie7 {property:value;}
Run Code Online (Sandbox Code Playgroud)

IE 6和7

@media screen\9 {
    .ie67 {property:value;}
}
Run Code Online (Sandbox Code Playgroud)

要么

.ie67 { *property:value;}
Run Code Online (Sandbox Code Playgroud)

要么

.ie67 { #property:value;}
Run Code Online (Sandbox Code Playgroud)

IE 6,7和8

@media \0screen\,screen\9 {
    .ie678 {property:value;}
}
Run Code Online (Sandbox Code Playgroud)

IE 8

html>/**/body .ie8 {property:value;}
Run Code Online (Sandbox Code Playgroud)

要么

@media \0screen {
    .ie8 {property:value;}
}
Run Code Online (Sandbox Code Playgroud)

仅限IE 8标准模式

.ie8 { property /*\**/: value\9 }
Run Code Online (Sandbox Code Playgroud)

IE 8,9和10

@media screen\0 {
    .ie8910 {property:value;}
}
Run Code Online (Sandbox Code Playgroud)

仅限IE 9

@media screen and (min-width:0) and (min-resolution: .001dpcm) { 
 // IE9 CSS
 .ie9{property:value;}
}
Run Code Online (Sandbox Code Playgroud)

IE 9及以上版本

@media screen and (min-width:0) and (min-resolution: +72dpi) {
  // IE9+ CSS
  .ie9up{property:value;}
}
Run Code Online (Sandbox Code Playgroud)

IE 9和10

@media screen and (min-width:0) {
    .ie910{property:value;}
}
Run Code Online (Sandbox Code Playgroud)

仅限IE 10

_:-ms-lang(x), .ie10 { property:value\9; }
Run Code Online (Sandbox Code Playgroud)

IE 10及以上版本

_:-ms-lang(x), .ie10up { property:value; }
Run Code Online (Sandbox Code Playgroud)

要么

@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
   .ie10up{property:value;}
}
Run Code Online (Sandbox Code Playgroud)

IE 11(及以上......)

_:-ms-fullscreen, :root .ie11up { property:value; }
Run Code Online (Sandbox Code Playgroud)

Javascript替代品

Modernizr的

Modernizr在页面加载时快速运行以检测功能; 然后它创建一个包含结果的JavaScript对象,并将类添加到html元素

用户代理选择

Javascript:

var b = document.documentElement;
        b.setAttribute('data-useragent',  navigator.userAgent);
        b.setAttribute('data-platform', navigator.platform );
        b.className += ((!!('ontouchstart' in window) || !!('onmsgesturechange' in window))?' touch':'');
Run Code Online (Sandbox Code Playgroud)

html元素中添加(例如)以下内容:

data-useragent='Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)'
data-platform='Win32'
Run Code Online (Sandbox Code Playgroud)

允许非常有针对性的CSS选择器,例如:

html[data-useragent*='Chrome/13.0'] .nav{
    background:url(img/radial_grad.png) center bottom no-repeat;
}
Run Code Online (Sandbox Code Playgroud)

脚注

如果可能,请避免浏览器定位.识别并修复您识别的任何问题.支持渐进增强优雅降级.考虑到这一点,这是一个并非总能在生产环境中获得的"理想世界"场景,因此上述内容应该有助于提供一些好的选择.


归因/基本阅读

  • Chrome浏览器只为IE9选择了样式,即:@media屏幕和(min-width:0)和(min-resolution:+ 72dpi)` - Chrome查找并使用其中的样式.: - ("(向上)投票锁定"虽然答案不再有效,使用当前版本的IE和Chrome (5认同)

sim*_*mon 24

你可以在前面添加CSS样式

:root
Run Code Online (Sandbox Code Playgroud)

使其成为IE9特定的,如下所示:

:root #element { color:pink \0/IE9; }  /* IE9 */
Run Code Online (Sandbox Code Playgroud)

  • 请注意,虽然这是有效的CSS,但它不适用于less.css. (4认同)

Mad*_*iha 19

使用IE条件评论:

<!--[if ie 9]>
    your stuff here
<![endif]-->
Run Code Online (Sandbox Code Playgroud)

  • 对于那里的任何其他copypaster,你可能想跳过<! - 和[if ie 9]之间的空格:) (4认同)

Har*_*rsh 8

\ 9是Internet Explorer特有的"CSS hack".

这只是意味着CSS的一个特定行以\ 9结尾;

在您的示例中,如果您的CSS看起来像这样......

html .twit-post .delete_note a 
{ 
background-position-y: 2px\9; 

}
html .twit-post .delete_note a:hover 
{ 
 background-position-y: -14px\9;
 }
Run Code Online (Sandbox Code Playgroud)

结果将是background-position-y:-14px; 在IE 9中