普通的HTML註釋形式是 而IE5~IE9這5個版本的IE瀏覽器還另外支持一種特殊的if條件註釋(感覺有點類似模板渲染時的語法結構) 這樣在處理IE瀏覽器相容性問題的時候就可以把hack代碼集中在一塊了,或者其他意想不到的用途 if條件註釋分為三種形式 1、是否IE(即:!) 2、是哪個版本的IE( ...
普通的HTML註釋形式是
<!-- 註釋 -->
而IE5~IE9這5個版本的IE瀏覽器還另外支持一種特殊的if條件註釋(感覺有點類似模板渲染時的語法結構)
<!--[if IE]> html語句 <![endif]-->
這樣在處理IE瀏覽器相容性問題的時候就可以把hack代碼集中在一塊了,或者其他意想不到的用途
if條件註釋分為三種形式
1、是否IE(即:!)
<!--[if IE]> html代碼 <![endif]--> <!--[if !IE]> html代碼 <![endif]-->
2、是哪個版本的IE(即:=)
<!--[if IE 6]> html代碼 <![endif]--> <!--[if IE 8]> html代碼 <![endif]-->
3、是哪個區間的IE(即:<,<=,>,>=)
<!-- IE8以下版本的瀏覽器才會執行內部的html代碼,如需要包含IE8則使用lte --> <!--[if lt IE 8]> html代碼 <![endif]--> <!-- IE7以上版本的瀏覽器才會執行內部的html代碼,如需要包含IE7則使用gte --> <!--[if gt IE 7]> html代碼 <![endif]-->
對於條件註釋
IE5~IE9的視角是:
其他瀏覽器的視角是:
那麼如果想要if條件註釋中所謂的html代碼IE5~IE9雖然能識別但是不能執行,而其他瀏覽器也能識別並執行的話,可以這樣寫
<!--[if !IE]>--> html代碼 <!--<![endif]-->
思路就是把條件註釋語法結構的首碼和尾碼分別給註釋掉,這時
IE5~IE9的視角變成了:
其他瀏覽器的視角則變成:
就都能識別出中間的代碼了。
個人覺得使用條件註釋的時候的一個註意點
<!--[if !IE]>--> <script src="js/jquery-3.2.1.min.js"></script> <!--<![endif]--> <!--[if IE]> <script src="js/jquery-1.12.4.min.js"></script> <![endif]-->
就是在每個瀏覽器中上邊兩個中只能使用一個的話一定得記得把IE9考慮進來,因為它也是能識別條件註釋的(感覺IE9就是IE向現代高級瀏覽器過渡的東西,CSS3只支持一部分,但是之前IE專有的一些問題照樣存在)