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

首頁 > 開發(fā) > CSS > 正文

讓IE可以變相支持CSS3選擇器

2024-07-11 09:03:10
字體:
來源:轉載
供稿:網(wǎng)友

武林網(wǎng)(www.survivalescaperooms.com)文章簡介:然而IE對高級CSS選擇器特別是CSS3選擇器的支持讓我們一直不能將CSS選擇器推廣應用。不過,雖然我們無法左右瀏覽器的市場份額,卻可以通過一些技術改善我們的工作。我們也可以使用其它的一些技術,讓IE可以變相支持CSS3選擇器。

別誤會,IE是不支持CSS3高級選擇器,包括最新的IE8(詳見《CSS選擇器的瀏覽器支持》),但是CSS選擇器的確是很有用的,它可以大大的簡化我們的工作,提高我們的代碼效率,并讓我們很方便的制作高可維護性的頁面。

然而IE對高級CSS選擇器特別是CSS3選擇器的支持讓我們一直不能將CSS選擇器推廣應用。不過,雖然我們無法左右瀏覽器的市場份額,卻可以通過一些技術改善我們的工作。我們也可以使用其它的一些技術,讓IE可以變相支持CSS3選擇器。

一位來自英國的網(wǎng)頁開發(fā)工程師Keith Clark開發(fā)了一個JavaScript方案來使IE支持CSS3選擇器。該腳本支持從IE5到IE8的各個版本。

用法

你只需要下載Robert Nyman的DOMAssistant腳本和ie-css3.js并將它們在你的頁面的head標簽中導入,如下:

script type="text/javascript" src="ie-css3.js"></script></head>

支持的選擇器ie-css3的一些限制如何工作的?

ie-css3.js下載頁面的每一個樣式文件并解析它的CSS3偽選擇器。如果一個選擇器被找到,它就會被替換為同名的CSS class。比如: div:nth-child(2) 將會變成 div._iecss-nth-child-2 。然后,Robert Nyman的DOMAssistant用于尋找匹配元素CSS3選擇器的DOM節(jié)點然后將相應的CSS類添加給它。

最終,元素的樣式表會被新的版本替代,然后用CSS3選擇器對相應元素添加對應的樣式。

避免IE的CSS解釋器

根據(jù)W3C的規(guī)定,一個瀏覽器應該無視它不認識的CSS規(guī)則。這就出現(xiàn)一個問題——我們需要利用樣式表文件中的CSS3選擇器,但是IE會將它們丟棄。

為了避免這個問題,每一個樣式文件都會通過XMLHttpRequest下載。這允許該腳本繞開瀏覽器內(nèi)置的CSS解釋器并能夠讀取原始的CSS文件。

替代方案

顯然這個也并非完美的方案,對于Ajax網(wǎng)站來說,它基本上是不能用的,因為在生成的樣式表被應用之后再改變DOM,就不會有效了。但是事實上我們可以自己來自定義一個ie-css3的。只是沒有它這個這么智能。

使用 cssQuery

cssQuery是由業(yè)界大牛Dean Edwards開發(fā)的一個Javascript組件。它就是為CSS 選擇器而生的。它可以支持幾乎所有的CSS 選擇器,包括CSS3選擇器。當然它在實現(xiàn)的時候進行了分級,分別針對CSS1,CSS2和CSS3制作了一個獨立的js包,以及一個標準包。支持所有A級瀏覽器。

簡單的用法:

tags tags

然后你就可以自己寫一些js為相應的對象添加想用的樣式了。

我建議對支持CSS高級選擇器的瀏覽器使用原生的CSS選擇器寫法,然后通過cssQuery在IE中動態(tài)的為響應的元素添加一個樣式名。

比如,我們可以這樣寫CSS:

aa

這里的第一條CSS3選擇器是用于Firefox/webkit等支持CSS3選擇器的非IE瀏覽器的,a.empty是專門為IE而寫。然后通過CSSQuery動態(tài)的在IE瀏覽器中為對應的元素添加樣式:

tags.

當然,上面的這段js最好使用IE的條件注釋。

使用 jQuery

據(jù)說jQuery的選擇器比cssQuery要快很多。當然,無可否認,jQuery的選擇器是目前流行的js框架中最好用的一個。而使用jquery來實現(xiàn)類似上述功能要方便很多,因為jQuery的選擇器更好用。

OK,jQuery的做法和cssQuery有些類似,CSS可以寫成上面一樣的,JS可以這樣寫:

$.

更具體的用法可以查看我之前寫的一個小例子《使用jQuery創(chuàng)建個性化鏈接樣式》

使用 DOMAssistant

DOMAssistant也是一個很不錯的JS庫,它提供了一些類似jQuery的功能,比如CSS 選擇器、事件以及一些DOM操作。它的優(yōu)點就是小巧,壓縮后只有9KB,我想這就是Keith Clark選擇DOMAssistant來作為ie-css3.js的基礎框架的主要原因吧。jQuery越來越肥胖了,而且用于實現(xiàn)這個功能有些浪費了。而且DOMAssistant的用法和jQuery非常類似。

事實上,DOMAssistant的選擇器和對DOM的CSS Class的操作與jQuery一模一樣。

$.

欲了解更多,可查看DOMAssistant官方,以及下載官方中文PDF文檔

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 高邮市| 女性| 随州市| 遂宁市| 西和县| 琼海市| 涟水县| 株洲县| 贵南县| 南安市| 安宁市| 洛扎县| 林甸县| 上虞市| 永康市| 荔浦县| 陕西省| 偏关县| 舞钢市| 巴南区| 应用必备| 青川县| 通榆县| 广汉市| 安达市| 怀宁县| 岳阳县| 宁南县| 兴业县| 乐亭县| 萨嘎县| 江永县| 凌海市| 阜城县| 阿荣旗| 沙洋县| 澄迈县| 景泰县| 平凉市| 永新县| 阳春市|