條件注釋簡介
IE中的條件注釋(Conditional comments)對IE的版本和IE非IE有優秀的區分能力,是WEB設計中常用的hack方法。
條件注釋只能用於IE5以上。
如果你安裝了多個IE,條件注釋將會以最高版本的IE為標準。
條件注釋的基本結構和HTML的注釋(<!– –>)是一樣的。因此IE以外的瀏覽器將會把它們看作是普通的注釋而完全忽略它們。
IE將會根據if條件來判斷是否如解析普通的頁面內容一樣解析條件注釋里的內容。
條件注釋屬性
gt : greater than,選擇條件版本以上版本,不包含條件版本
lt : less than,選擇條件版本以下版本,不包含條件版本
gte : greater than or equal,選擇條件版本以上版本,包含條件版本
lte : less than or equal,選擇條件版本以下版本,包含條件版本
! : 選擇條件版本以外所有版本,無論高低
條件注釋寫法
<!--[if IE]>用於 IE <![endif]-->
<!--[if IE 6]>用於 IE6 <![endif]-->
<!--[if IE 7]>用於 IE7 <![endif]-->
<!--[if IE 8]>用於 IE8 <![endif]-->
<!--[if IE 9]>用於 IE9 <![endif]-->
<!--[if gt IE 6]> 用於 IE6 以上版本<![endif]-->
<!--[if lte IE 7]> 用於 IE7或更低版本 <![endif]-->
<!--[if gte IE 8]>用於 IE8 或更高版本 <![endif]-->
<!--[if lt IE 9]>用於 IE9 以下版本<![endif]-->
<!--[if !IE]> -->用於非 IE <!-- <![endif]-->
示例
這裡是一個演示條件注釋如何工作的簡單示例。
<!--[if IE 6]><p>You are using Internet Explorer 6.</p><![endif]--><!--[if !IE]><!--><p>You are not using Internet Explorer.</p><!--<![endif]-->
句法
有兩種“條件注釋”: 下層顯示 (downlevel revealed)和 下層隱藏(downlevel hidden)。
每種注釋的基本句法如下表所示。第一條展示的是基本的 HTML 注釋,被包括在內作為比較以及用以說明被每種條件注釋使用的不同句法。
注釋類型 | 句法或可能取值 |
標準 HTML 注釋 | <!--Comment content --> |
downlevel-hidden | <!--[ifexpression]>HTML<![endif]--> |
downlevel-revealed | <![ifexpression]>HTML<![endif]> |
於每個條件注釋之中的句法塊內的 HTML 表示任意的 HTML 內容塊,包括腳本。兩種條件注釋均使用條件 表達式以指示注釋塊內的內容應該被解析還是被忽略 。條件表達式由特性,操作符,和/或決定於其特性的值組成。下表展示了支持的特性並描述了每種特性支持的值。
項目 | 示例 | 說明 |
IE | [if IE] | 字元串 "IE" 是一種對應於用以瀏覽網頁的 Internet Explorer 的版本的一種特性。 |
value | [if IE 7] | 一個對應於瀏覽器版本的整數或浮點數。返回一個布爾值,版本號和瀏覽器版本相匹配時為 true。更多信息參見版本向量(en:Version vector)。 |
WindowsEdition | [if WindowsEdition] | 適用於 Windows 7 上的 Internet Explorer 8。字元串 "WindowsEdition" 是一種對應於用以瀏覽該網頁的 Microsoft Windows 版本的特性。 |
value | [if WindowsEdition 1] | 一個對應於用以瀏覽該網頁的 Windows 的版本的整數。返回一個布爾值,數值和使用的版本相匹配時為真 true。關於所支持的值和它們所描述的版本的更多信息,參見GetProductInfo 函式的pdwReturnedProductType參數。 |
true | [if true] | 永遠等價於 true. |
false | [if false] | 永遠等價於 false. |
可用於創造條件注釋的算符如下表。
項目 | 示例 | 說明 |
! | [if!IE] | NOT 運算符。這被放在特性,算符, 或者子表達式的前面以反轉該表達式的布爾值含義。 |
lt | [if lt IE 5.5] | 小於運算符。第一項小於第二項時返回 true。 |
lte | [if lte IE 6] | 小於或等於運算符。第一項小於或等於第二項時返回 true。 |
gt | [if gt IE 5] | 大於運算符。第一項大於第二項時返回 true。 |
gte | [if gte IE 7] | 大於或等於運算符。第一項大於或等於第二項時返回 true。 |
( ) | [if!(IE 7)] | 子表達式運算符。用以連線布爾算符以創造更加複雜的表達式。 |
& | [if (gt IE 5)&(lt IE 7)] | AND 運算符。所有子表達式為真時返回 true。 |
| | [if (IE 6)|(IE 7)] | OR 運算符。子表達式任意一個為真時返回 true。 |