考虑到不断发展的安全威胁,我已经更新了以下内容:
IE 6
* html .ie6 {property:value;}
或者
.ie6 { _property:value;}
IE 7
*+html .ie7 {property:value;}
或者
*:first-child+html .ie7 {property:value
IE 6 和 7
@media screen\9 {
.ie67 {property:value;}
}
或者
.ie67 { *property:value;}
或者
.ie67 { #property:value;}
IE 6, 7和8
@media \0screen\,screen\9 {
.ie678 {property:value;}
}
IE 8
html>body .ie8 {property:value;}
或者
@media \0screen {
.ie8 {property:value;}
}
只支持IE 8标准模式
.ie8 { property : value\9 }
IE 8、9和10
@media screen\0 {
.ie8910 {property:value;}
}
仅适用于IE 9
@media screen and (min-width:0\0) and (min-resolution: .001dpcm) {
// IE9 CSS
.ie9{property:value;}
}
IE 9 及以上版本
@media screen and (min-width:0\0) and (min-resolution: +72dpi) {
// IE9+ CSS
.ie9up{property:value;}
}
IE 9和10
@media screen and (min-width:0) {
.ie910{property:value;}
}
仅适用于IE 10
_:-ms-lang(x), .ie10 { property:value\9; }
IE 10及以上版本
_:-ms-lang(x), .ie10up { property:value; }
或者
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
.ie10up{property:value;}
}
-ms-high-contrast
的使用意味着 MS Edge 不会被针对,因为 Edge 不支持 -ms-high-contrast
。
IE 11
_:-ms-fullscreen, :root .ie11up { property:value; }
Javascript的替代方案
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':'');
将以下内容添加到
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'
允许非常精准的CSS选择器,例如:
html[data-useragent*='Chrome/13.0'] .nav{
background:url(img/radial_grad.png) center bottom no-repeat;
}
脚注
如果可能的话,识别和修复任何问题而不使用hack手段。支持渐进增强和优雅降级。然而,这是一个“理想世界”的情况,不总是可得到的,因此以上内容应该能够提供一些好的选项。
归属 / 必读