.test{ /* 1. */\x0d\x0a\x0d\x0a/* color:#09F\0以前是IE8/9, 现在10也支持 */\x0d\x0a\x0d\x0acolor:#09F\0//* 以前是IE8 only, 现在IE9/10也支持. 如要排除IE9需要使用下面的rule重设IE9样式 */\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0a@media all and (min-width:0) { /* 2. */\x0d\x0a\x0d\x0a.test{color:red\9}/* IE9 only, 现在IE10也支持 */\x0d\x0a\x0d\x0a/* Ps:老外的方法都是\0,根本没考虑Opera */\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0a@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { /* 3. */\x0d\x0a\x0d\x0a .test { color: green} /* IE10+ */\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0a:root .test { color:#963\9} /* 以前IE9 only, 现在10也支持, 优先级高于@media, 优先级太高, 尽量少用 */这是因为IE自从IE9开始,会对网页的MIME类型进行验证,如果MIME类型不正确的话,就不会加载相应的样式表或者JS文件,这也是出于安全的考虑。\x0d\x0a造成IE9以上浏览器无法加载CSS样式表的,有几个可能的原因,一个可能是你的CSS样式引用的书写方式不正确,导致在IE9和IE10下面无法通过MIME的检查,如果是这个原因,在代码里面修改一下css样式引用的方法就行了。\x0d\x0a另外一个可能的原因,可能是你在电脑里面安装了代理软件或者其他什么与代理相关的软件,如wallproxy之类的,这一类软件可能会在打开本地HTML文件时修改mime类型,把type替换为stain之类,这个没有什么特别好的解决方法,要么卸载这些软件,要么重新安装一下试试。\x0d\x0a如果你是自己配置服务器后出现了这个问题,那么就可能是第三个原因了,在服务器端没有配置css的mime类型,这个对应的在IIS或者apache里面添加一下css的type就行了。针对IE9的CSS只需在相应CSS代码加入只有IE9识别的 \9\0。具体代码如下:
.div{ background-color:#0f0\9\0/* ie9 */ }
其他浏览器写法:
background-color:#f00/*all*/
background-color:#0ff\0/* ie 8/9 */
background-color:#0f0\9\0/* ie9 */
*background-color:#00f/*ie7*/
_background-color:#ff0/*ie6*/
background-color//:#090/*非IE*/
background-color:#900\9/*所有ie*/
}