到底誰說了算?
CSS樣式使用優先級判斷
2007年5月27日寫的,現在轉到這里來。
修正前,再次謝謝hax的指點。最正確的說法:http://www.w3.org/TR/CSS21/cascade.html#specificity 參見這里的相關內容,一下只是我個人偷懶的理解方式,只解決常規情況下的絕大部分問題。不是預期使用的樣式,如何判斷那個樣式會最終起作用呢?到底誰說了算,可以依據下面幾個原則:
CSS樣式定義多了,常常出現顯示效果與預期不一致的情況。其中很大一部分原因在于起作用的樣式。
1。多個選擇器可能會選擇同一個元素,有3個規則,從上到下重要性降低:
!important的用戶樣式
!important的作者樣式
作者樣式
用戶樣式
瀏覽器定義的樣式
2。CSS樣式的特殊性權重——誰有分量,誰說了算。
CSS規范為不同類型的選擇器定義了特殊性權重,特殊性權重越高,樣式會被優先應用。
權重設定如下:
html選擇器,權重為1;
類選擇器,權重為10;
id選擇器,權重為100;
這里還有一種情況:在html標簽中直接使用style屬性,這里的style屬性的權重為1000;
即如下情況:
#x34y {color:red}
<. p id=x34y > 優先選擇style=""設定的樣式。
其他類型的,大家看看例子就明白了。
例子:
h1{color:blue} 權重為1
p em{color:yellow} 權重為2
.warning{color:red} 權重為10
p.note em.dark{color:grag} 權重為22
#main{color:black} 權重為100 這里還有一種情況:
權重一樣時如何處理?權重一樣時就另說了。看看下面的就明白了。
3。CSS樣式的層疊原則——誰離我近,誰說了算。
當權重一樣時,會采用“層疊原則” 后定義的會被應用。
如:p{color:yellow}
p{color:red}
作用到這里 <. p >我的什么顏色呢?< /p>
結果會是red的。
4。CSS樣式的特殊標記——誰有特權,誰說了算。
如果有人看不順眼,非得要自己說了算,那可以搞點特權,如下即可
p {color:blue !important;}
加上!important;可將自己權重設為最高。
如果你要問兩個!important;設定的樣式,那個樣式說了算,我說你為什么不自己試試看看呢!
好了,誰說了算的問題就到這里了。
平凡而簡單的人一個,無權無勢也無牽無掛。一路廝殺,只進不退,死而后已,豈不爽哉!
收起對“車”日行千里的羨慕;收起對“馬”左右逢緣的感嘆;目標記在心里面,向前進。一次一步,一步一腳印,跬步千里。
這個角色很適合現在的我。
posted on 2007-12-17 23:44
過河卒 閱讀(294)
評論(0) 編輯 收藏 所屬分類:
W3C/Css/Html