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
相關文章
相關標籤/搜索