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