條件註解(Conditional Comments)
來簡單的說明一下,甚麼時候會需要用到呢?當你在 網頁設計的時候,當然會希望各瀏覽器的顯示效果是一樣的,但是偏偏就是各瀏覽器對同樣的語法解析的方法會有所差異,導致沒有辦法完全一樣,這時候就需要這個玩意了,他有一點點像之前提到的CSS Hack的用途,但是這個的用途更廣,不是只有CSS可以處理,甚至可以根據不同的瀏覽器顯示不同的內容,或者是執行不同的Javascript,挺實用的。
另外這其實是IE only的語法,他是利用Html的註解形式,在註解中加入一些判斷的語法,讓IE根據判斷的語法,來決定要不要執行註解中的內容,而其他的瀏覽器例如(Firefox,Google Chome,Safari...)都還是一樣視為註解,來達到區分IE瀏覽器版本及區分不同瀏覽器的效果。
基本示範
請使用各瀏覽器及各版本的IE來觀看,就可以看出不同。
不是IE的才看的到這行文字
內容在 IE7 及比較新的版本,以及 IE 以外的瀏覽器都看的到。
原始碼
<!--[if IE]>
只有IE看的到,其他瀏覽器看不到
<![endif]-->
<!--[if IE 6]>
只有IE6 看的到,其他瀏覽器看不到
<![endif]-->
<!--[if lt IE 7]>
比IE7舊的IE才看的到(不包含IE7),其他瀏覽器看不到
<![endif]-->
<!--[if gte IE 8]>
IE8以上的IE才看的到(包含IE8),其他瀏覽器看不到
<![endif]-->
<!--[if !IE]>-->
不是IE的才看的到
<!--<![endif]-->
<!--[if !(IE 6)]>
除了IE6以外的IE都看的到,其他瀏覽器看不到
<![endif]-->
<!--[if (gte IE 6)&(lt IE 8)]>
IE6以上且低於IE8的版本才看的到,其他瀏覽器看不到
<![endif]-->
<!--[if (IE 7)|(IE 6)]>
只有IE7 或 IE6 看的到,其他版本及其他瀏覽器看不到
<![endif]-->
<!--[if gte IE 7]><!-->
內容在 IE7 及比較新的版本,以及 IE 以外的瀏覽器都看的到。
<!--<![endif]-->
語法說明
參數 | 說明 |
if | 判斷是或不是 |
lt |
less-than,版本小於,例如 [if lt IE 7]表示 版本小於IE7,不包含IE7。 |
lte |
less-than or equal,版本小於或等於,例如 [if lte IE 7]表示 版本小於IE7,包含IE7。 |
gt |
greater-than,版本大於,例如 [if gt IE 7]表示 版本大於IE7,不包含IE7。 |
gte |
greater-than or equal,版本大於或等於,例如 [if gte IE 7]表示 版本大於IE7,包含IE7。 |
! |
NOT,否定的意思,例如[if !IE]表示不是IE的。 |
& |
AND,且的意思,例如[if (gt IE 7)&(lt IE 9)],表示要大於IE7且小於IE9,也就是IE8的意思啦 |
| |
OR,或的意思,例如[if (IE 6)|(IE 7)],表示IE6或IE7都會符合條件。 |
有個這個東西,在網頁設計時就可以針對不同的瀏覽器來顯示不同的內容,例如IE6的用戶就出現一段話,勸他快快升級,新的IE比較快也比較安全啊,總之可以針對不同的瀏覽器來個別做一些微調,讓各瀏覽器的顯示狀況一致,這是必學的手法啊!!不過如果用到CSS3這類或者是舊版本不支援的功能,那也沒有辦法,只能夠讓使用舊版本瀏覽器的使用者,在不影響瀏覽內容的情況下,適當的取捨畫面的部分了。
Reference:Conditional Comments(微軟官方資料英文)