国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > CSS > 正文

條件CSS的高級用法

2024-07-11 08:44:32
字體:
來源:轉載
供稿:網友

條件CSS(Conditional-CSS)并不僅僅對用戶使用的瀏覽器感興趣,而是對用戶瀏覽器使用的渲染引擎更感興趣。這就是條件(Conditional-CSS)使用 ‘Geckko’ 而非廣為所知的 Firefox 作為它瀏覽器條件之一的原因。 介紹
條件CSS(Conditional-CSS)的開發源于在多數瀏覽器上修正 CSS 渲染 bug 的需求,以確保盡量多的用戶看到正確的網站設計。核心思想建立在 Internet Explorer 上發現的條件注釋方法,并擴展到包含其他的瀏覽器,而且將條件聲明內聯到 CSS 定義里面。
相關教程:針對不同版本的IE瀏覽器的條件CSS應用
條件CSS(Conditional-CSS)并不僅僅對用戶使用的瀏覽器感興趣,而是對用戶瀏覽器使用的渲染引擎更感興趣。這就是條件(Conditional-CSS)使用 ‘Geckko’ 而非廣為所知的 Firefox 作為它瀏覽器條件之一的原因。同樣地, ‘Webkit’ 代替了 Safari。這使得其他使用同樣渲染引擎地瀏覽器接受到那些同樣地定位 CSS。這個規則地一個例外是使用了 IE(而不是 ‘Trident’),因為這是使用的 IE 的條件注釋,而 ‘Trident’ 并不怎么為人所知。同樣地,對于 Opera,因為只有 Opera 使用 Presto 渲染引擎,所以使用了 ‘Opera’。
需要注意的是,如果所有瀏覽器都能正確地執行 W3C 發布的 CSS 標準,那么條件CSS(Conditional-CSS)就沒有需求了。但是,CSS bug 對于開發者是無法回避的現實,而且往往都及其讓人沮喪。條件CSS(Conditional-CSS)給我們提供了一個簡單的方法來解決這些問題。高級條件聲明條件塊
一個典型的條件聲明只應用于一條 CSS 規則。當然,也有可能對整個 CSS 塊使用條件,這樣的塊只用于特定的瀏覽器。下面的例子中 CSS 塊只用于 IE 瀏覽器。
// 條件塊實例 [if IE] .box { width: 500px; padding: 100px 0; }
一個更高級的使用了條件CSS(Conditional-CSS)的實例樣式表可以看這里。它展示了使用條件聲明的各種方法。需要注意的是在條件聲明和 CSS 聲明之間不需要空格。條件導入
條件CSS(Conditional-CSS)不僅僅自動將 CSS 中找到的任意 ‘@import’ 聲明進行擴展并引入(為了減少 HTTP 請求),也允許條件導入語句。這可以用于為特定瀏覽器引入一些規則。下面的例子會為移動版 Safari(iPhone / iPod Touch)導入一個樣式表,為其他瀏覽器導入另一個不同的樣式表。
// 條件導入實例[if SafMob] @import('iphone.css'); [if ! SafMob] @import('non-iphone.css');瀏覽器分組
將瀏覽器按照若干支持級別進行分組是一種常見并且是很好的做法。一個由我們在U4EA中提供的瀏覽器列表展示了這中方法,在那里我們將瀏覽器分成4個不同的支持級別: A 級: 最高級,支持所有組件 C 級: 核心支持,基本顯示信息 X 級: CSS 在該類瀏覽器中被鎖定,僅依賴HTML渲染 U 級: 不支持。獲得的CSS將和C級瀏覽器一樣
可能遇到的情況是,你只想讓A級瀏覽器獲取某些CSS,而又要確保C級以及更低級的瀏覽器不能看到它們。比如,想讓A級瀏覽器將一個UL列表顯示為tab,而其他瀏覽器按照原始格式顯示點式列表。
條件CSS 允許你通過定義一組瀏覽器到特定的分組來實現此類需求,然后使用標準條件語句中的瀏覽器區域來匹配這個瀏覽器分組。條件CSS 有一套內置的標準瀏覽器分組(當然,你也可以定義你自己的分組): ‘cssA’ - A 級CSS支持 IE 6 Gecko 1.0 (Firefox, Camino, Flock, etc) Webkit 312 (Safari 1.3 , Google Chrome) Opera 7 Konqueror 3.3 ‘cssX’ - X 級CSS支持 IE 4 以下 IE Mac 4.5 以下
一個使用條件CSS的瀏覽器分組的例子:
1234567
// 條件CSS瀏覽器分組實例[if cssA] ul.li { display: block; margin-left: 5px; width: 50px; /* etc */}
正如你可以看到的,瀏覽器分組的條件語句被格式化為與標準條件語句同樣的語法。注意’cssX’是一個特殊的瀏覽器分組,它可以引起條件CSS返回空值除了它自己默認的。 [if {!} browser_group]
在這里:
    ! - 代表否定聲明(i.e. NOT) - 可選擇的 browser_group - 指定瀏覽器分組聲明標簽 ‘cssA’ - A 級瀏覽器 瀏覽器是如何被檢測到的
    默認瀏覽器通過條件CSS和相應的樣式被檢測到,然后通過讀取瀏覽器的user agent字符串處理。這使得設置和整合條件CSS到你的網站變得灰常容易,你所需要做的僅僅是上傳代碼并在你的HTML中編輯CSS import聲明就可以了。User agent 檢測是一種檢測那種瀏覽器及其版本被使用的有效的方法,不過有一種倒退的現象就是有些用戶改變他們的瀏覽器的user agent 以顯示他們很了不起(通常是IE)。在這種情況下,最終用戶將會獲取錯誤的CSS到他們的瀏覽器。我對此的觀點是,如果你的目標瀏覽器是IE,那么你應該預料到IE將會看到的情況。通過HTTP GET 變量設置瀏覽器
    之前我們有說過確保IE并且只有IE可以獲得IE特定的CSS是可行的。要做到這些我們需要使用IE的條件注釋并結合條件CSS能夠使用GET變量獲取瀏覽器信息的能力。條件CSS 接受瀏覽器的兩個不同變量: b - 瀏覽器名稱 v - 瀏覽器版本(可選)
    下面的這個例子顯示使用條件注釋聲明的HTML需要確定IE6和IE7將獲取它們的特定顏色,而其它的所有瀏覽器將獲取其它樣式:
    123456789
    <!--[if !IE]><!--> <style type="text/css">@import '/media/css/c-css.php?b=nonIE';</style><!--<![endif]--><!--[if IE 6]> <style type="text/css">@import '/media/css/ic-css.php?b=IE&v=6';</style><![endif]--><!--[if gte IE 7]> <style type="text/css">@import '/media/css/c-css.php?b=IE&v=7';</style><![endif]--> 使用靜態CSS文件
    使用條件CSS為每一個瀏覽器生成一個定制的CSS文件的方法看起來很不錯, 它只是十分適用于管理一個相對比較輕量級的網站,因為程序必須運行于樣式的每一個請求。對于中到大型網站,這的確不太合適,特別是當創建的文件數量受到限制的時候。所以條件語句有接受命令行參數的能力,它可以指定某個瀏覽器和版本(可選)應該生效然后輸出最終樣式到標準輸出文件。下面的腳本可以用于為IE6/7以及非IE瀏覽器生成CSS文件(注意,該腳本描述了PHP版本的條件CSS,但是命令行選項和C版本一樣):
    1234
    #!/bin/shphp -q c-css.php IE 7 > ie7.cssphp -q c-css.php IE 6 > ie6.cssphp -q c-css.php > nonie.css
    公平的說,這是你需要的最合適的樣式組合。因此,下面的使用HTML注釋可以配合上面的腳本來調用需求的CSS文件。
    123456789
    <!--[if !IE]><!--> <style type="text/css">@import '/media/css/nonie.css';</style><!--<![endif]--><!--[if IE 6]> <style type="text/css">@import '/media/css/ie6.css';</style><![endif]--><!--[if gte IE 7]> <style type="text/css">@import '/media/css/ie7.css';</style><![endif]-->
    享受條件CSS的好處吧!
    糖伴西紅柿說:
    最終的條件CSS(Conditional-CSS)的高級用法也新鮮出爐了,加上老江的條件CSS(Conditional-CSS)介紹,這個系列就全了。
    剩下的就是學習、討論了。嗯,這篇文章非我一人之功,神飛同學做出了巨大的貢獻。
    原文地址:http://www.conditional-css.com/advanced
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 沙雅县| 景宁| 新乡县| 南丹县| 茌平县| 会理县| 兴城市| 安平县| 吉木萨尔县| 阜阳市| 潞城市| 招远市| 泗水县| 镇雄县| 原平市| 容城县| 长阳| 郴州市| 九江县| 固安县| 遵义市| 海伦市| 祁东县| 西乌| 来安县| 梓潼县| 特克斯县| 尉氏县| 灵宝市| 泰兴市| 江都市| 诸暨市| 依兰县| 鄂托克旗| 应城市| 平定县| 河北省| 福建省| 德昌县| 阳春市| 达州市|