IE10的CSS-Hack介绍及IE11的CSS-Hack
条件注释
通常,我们解决IE兼容性问题一般采用条件注释的方法,比如:
<!--[if IE]>
<style>.IE-show{display:block;}</style>
<script src="js/html5shiv.min.js"></script>
<script src="js/respond.src.js"></script>
<![endif]-->
[if IE]就是只有在IE浏览器下才会加载的JS以及运行的代码。【题外话】目前阶段对弈IE浏览器不需要区分的太细致,一般都仅仅需要兼容到IE9即可。而IE8的话一般都提供一个蒙层去遮挡,具体使用nth-child(1) 去区分IE9+浏览器:
// ie8以及以下浏览器显示遮罩层,
.for-ie8{display:block;}
// 支持nth-的浏览器(ie9&+)则隐藏,
.for-ie8:nth-child(1) {
display: none
}
但是使用IE条件语句,我们发现IE10和11并不支持条件语句!
win8的Metro版IE10将不再支持插件,并且不再支持条件注释。
条件注释是一种安全的区分IE浏览器版本的语法,且被认为是取代针对IE css hack的首选办法。但是,如果IE10不再支持条件注释,我们唯一的选择只能针对css的问题用css hack或者判断浏览器来解决 我们当然不希望使用后者。
@media -ms-high-contrast
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
/* IE10-specific styles 写在这 */
}
注意:上面的代码在IE11中也会生效!如果只对针对IE11,怎么办呢?下面是IE11的专属css hack.
@media all and (-ms-high-contrast:none) {
//这里是要单独为IE11设置的样式
}