任何一個試圖使用 CSS 的網頁設計師和開發人員都會發現不同的瀏覽器要求不同的樣式聲明。這些煩惱歸咎於各瀏覽器及其各版本不同程度的 CSS 執行的完整性。條件 CSS 是這個問題的一個解決方案,採用的是 Internet Explorer 的條件注釋文法的思想,並把它內聯到 CSS 聲明之中。
基本用法
條件 CSS 主要用於指出一個特別的 CSS 聲明是不是應該用於一個特別的瀏覽器。當然你不希望經常這麼做,但是當你需要針對一個瀏覽器的時候,它會非常有用。可以在U4EA支援列表裡看到,大部分的瀏覽器都支援這種方式。
任意 CSS 聲明或者塊都可以添加條件聲明首碼,這些首碼有3種基本類型:
[if {!} browser]
[if {!} browser version]
[if {!} condition browser version]
! - 聲明的否定 (例 NOT) - 可選
browser - 聲明針對的瀏覽器
‘IE’ - Internet Explorer
‘Gecko’ - Gecko 核心的瀏覽器 (Firefox, Camino 等)
‘Webkit’ - Webkit 核心的瀏覽器 (Safari, Shiira 等)
‘SafMob’ - 移動版 Safari (iPhone / iPod Touch)
‘Opera’ - Opera 的瀏覽器
‘IEMac’ - Mac 版本的 Internet Explorer
‘Konq’ - Konqueror
‘IEmob’ - 移動版 IE
‘PSP’ - Playstation Portable
‘NetF’ - Net Front(恕糖伴西紅柿無知,不知道這是啥東東)
version - 要針對的瀏覽器版本
condition - 算術符
lt - 小於
lte - 小於等於
eq - 等於
gte - 大於等於
gt - 大於
一些條件聲明的例子:
// 條件-CSS 文法執行個體
[if IE] - 如果瀏覽器是 IE
[if ! Opera] - 如果瀏覽器不是 Opera
[if IE 5] - 如果瀏覽器是 IE 5
[if lte IE 6] - 如果瀏覽器是 IE 6 或者更低版本 (IE 5, IE 4 等)
[if ! gt IE 6] - 和上面的聲明等效, 如果瀏覽器版本不高於 IE 6
|
因為許多執行個體認為 div 是具有 width 和 padding 的盒類。因此它也應該在 IE 5 中表現正常(我發現很多人已經放棄支援 IE 5了,但這是一個經典例子)。IE 5的盒模型不標準,因此這就是使用條件 CSS 解決的方法:
// 條件 CSS 盒模型例子
div.box {
width: 400px;
[if IE 5] width: 600px;
padding: 0 100px;
}
|
像你所看到的,條件 CSS 使得你可以只維護一個 CSS 檔案,而不是好幾個需要用到 IE 的條件注釋的檔案。這有助於流線型維護,也使得代碼更加清晰。
再進一步,條件 CSS 的一個重要特性是當它發現一條 @import CSS 聲明時,它會自動開啟並插入需要匯入的檔案。這樣就減少了頁面的載入時間,因為瀏覽器只需要對 CSS 檔案做出一條 HTTP 要求。