當使用了多個樣式表,樣式表需要爭奪特定選擇符的控制權。在這些情況下,總會有樣式表的規則能獲得控制權。以下的特性將決定互相對立的樣式表的結果。
! important
規則可以用指定的! important 特指為重要的。一個特指為重要的樣式會凌駕於與之對立的其它相同權重的樣式。同樣地,當網頁制作者和讀者都指定了重要規則時,網頁制作者的規則會超越讀者的。以下是! important 聲明的例子:
BODY { background: url(bar.gif) white;
background-repeat: repeat-x ! important }
Origin of Rules (Author's vs. Reader's)
正如以前所提及的,網頁制作者和讀者都有能力去指定樣式表。當兩者的規則發生沖突,網頁制作者的規則會凌駕於讀者的其它相同權重的規則。而網頁制作者和讀者的樣式表都超越浏覽器的內置樣式表。
網頁制作者應該小心地使用! important 規則,因為它們會超越用戶任何的! important 規則。例如,一個用戶由於視覺關系,會要求大字體或指定的顏色,而且這樣的用戶會有可能聲明確定的樣式規則為! important,因為這些樣式對於用戶閱讀網頁是極為重要的。任何的! important 規則會超越一般的規則,所以建議網頁制作者使用一般的規則以確保有特殊樣式需要的用戶能閱讀網頁。
選擇符規則: 計算特性
基於它們的特性級別,樣式表也可以超越與之沖突的樣式表,一個較高特性的樣式永遠都凌駕於一個較低特性的樣式。這只不過是計算選擇符的指定個數的一個統計游戲。
統計選擇符中的ID屬性個數。
統計選擇符中的CLASS屬性個數。
統計選擇符中的HTML標記名格式。
最後,按正確的順序寫出三個數字,不要加空格或逗號,得到一個三位數。( 注意,你需要將數字轉換成一個以三個數字結尾的更大的數。)相應於選擇符的最終數字列表可以很容易確定較高數字特性凌駕於較低數字的。以下是一個按特性分類的選擇符的列表:
#id1 {xxx} /* a=1 b=0 c=0 --> 特性 = 100 */
UL UL LI.red {xxx} /* a=0 b=1 c=3 --> 特性 = 013 */
LI.red {xxx} /* a=0 b=1 c=1 --> 特性 = 011 */
LI {xxx} /* a=0 b=0 c=1 --> 特性 = 001 */
特性的順序
為了方便使用,當兩個規則具同樣權重時,取後面的那個。