ie条件注释

1 <!--[if lt IE 7]>      <html class="lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
2 <!--[if IE 7]>         <html class="lt-ie9 lt-ie8">        <![endif]-->
3 <!--[if IE 8]>         <html class="lt-ie9">               <![endif]-->
4 <!--[if gt IE 8]><!--> <html>                              <!--<![endif]-->

可以正确的理解上面这段的执行过程的话,对ie条件注释的使用应该是掌握了、

第1行:
浏览器为ie6及ie5判断为真,因此解析为<html class="lt-ie9 lt-ie8 lt-ie7">
浏览器为ie7--ie9判断为假,解析为空。
ie10及以上和非ie浏览器做为注释忽略掉(由于他们都不支持条件注释)。

第二行,第3行,
解析过程相似于行1.

第4行比较特殊:
浏览器为ie5-ie9的话判断为假,解析为空。
浏览器为ie9,判断为真,解析出<html>。
浏览器为ie10及以上和非ie,<![if gt IE 8]> 以及 <![endif]>会被当作没法识别的标签,整条代码最终被解析为<html>。

若是按下面这样写的话实际上是错误的。
<!--[if gt IE 8 | !IE]> <html> <![endif]-->
ie9判断为真,解析出<html>。但是ie10及非ie浏览器会把它当作注释忽略,所以没法正确解析出<html>。

总结:
ie条件注释只能被ie浏览器解析,非ie浏览器当作注释处理、
因此<!--[if !IE]>html<![endif]-->,实际上并没有实际用途。并不能让非ie浏览器解析出html。
若是想排除ie让其余浏览器正确解析的话,应该使用
<!--[if !IE]><!--> <html>                              <!--<![endif]-->
这种条件注释的类型被称做downlevel-hidden

参考:http://www.veryhuo.com/a/view/50853.html
相关文章
相关标签/搜索