瀏覽器問題
IE7非常不幸的認(rèn)為HTML注釋也是真實的DOM元素,所以如果你在錯誤的地方使用注釋,IE7將會把它當(dāng)作兄弟計算在內(nèi),而你設(shè)定的選擇器將不會工作。使用兄弟選擇符時只要了解這個問題注意讓注釋出現(xiàn)在不會惹麻煩的地方。
另外一個知道的兄弟選擇符問題,除了opera 9外的所有瀏覽器,當(dāng)額外元素是經(jīng)script增加的,它們不會解釋基于樣式表的兄弟選擇符。所以如果你用script在元素中建立一個新的段落,只有Opera 9才會認(rèn)識到從而改變樣式。其他當(dāng)前瀏覽器只會忽略動態(tài)結(jié)構(gòu),在新的元素添加進來前保持原來樣式。
額外介紹下:first-child偽類
IE7新支持:first-child偽類。這個選擇器的語法和用法和 :hover偽類相似,:first-child選擇元素里出現(xiàn)的第一個子部,用法像:hover一樣,比如鏈接會是a:first-child。 我們認(rèn)識到使用:first-child比僅使用兄弟選擇符來的簡單。但在怎樣獲得贊揚或是用:first-child偽類選擇器替換它之前,我們希望大家同樣認(rèn)識到兄弟選擇符是怎么獨立運用的。
比較下面的代碼,使用:first-child簡單許多。 使用 :first-child之前
div>div>div+p a {color: red;} div>div>div+p a+a {color: blue;}
使用 :first-child...
div>div>div+p a:first-child {color: red;}
:first-child確實讓工作簡單許多!不需要另外規(guī)則改變樣式,只要記住當(dāng)使用:first-child,它只作用于第一個子部first child。沒有其他兄弟元素被選擇,所以我們還需要兄弟選擇符的才干。
我們可不可以使用兄弟和子選擇符聯(lián)合:first-child?當(dāng)然可以,子選擇符看起來沒有問題?墒牵值苓x擇符不能直接跟在:first-child前面,因為很明顯第一個子部不可能有上面的兄弟。
IE的問題
IE7似乎有一個問題,當(dāng)兄弟選擇符比:first-child在選擇器中來的晚,IE7順從兄弟選擇符。這個情況也在其他瀏覽器有,但IE7顯然不能處理相關(guān)的復(fù)雜性。這看來不夠完美,不過至少IE7支持簡單適度的聯(lián)合結(jié)構(gòu),或許現(xiàn)在就可。 所以腦袋里記住,作為兄弟選擇符,IE7將會考慮第一個鏈接前面的html注釋為元素節(jié)點,而且IE7會選擇注釋代替,甚至你使用a:first-child都沒用。IE7不關(guān)心:first-child偽類前面的"a",它仍然堅持選擇注釋(注釋和第一個鏈接在同一個容器而且在鏈接前面)。所以當(dāng)你使用注釋和高級CSS選擇器要清楚了解真相。
結(jié)論
我們希望這篇文章沒有給你們帶來困惑,當(dāng)支持更多選擇符時了解更多可以用到的可能性樣式。這在IE7大規(guī)模推廣前還沒有用處,現(xiàn)在你可以做好準(zhǔn)備,至少關(guān)注已經(jīng)支持的選擇符。
經(jīng)典論壇討論: http://bbs.blueidea.com/thread-2698886-1-2.html
出處:藍(lán)色理想
責(zé)任編輯:moby
上一頁 詳細(xì)介紹IE7新支持的選擇器 [4] 下一頁
◎進入論壇網(wǎng)頁制作、網(wǎng)站綜合版塊參加討論
|