css中為什么要有層疊機制
因為在css中可能會有多個樣式同時影響同一個元素的某個屬性,層疊機制可以解決作者(寫代碼的人),用戶(瀏覽頁面的人)和用戶代理(一般指瀏覽器)的樣式沖突。
在層疊中每個樣式規則都有一個權重值,當其中幾條規則同時生效時,權重最大的規則優先。一般來說作者指定的樣式權重值高于用戶樣式權重值,用戶樣式權重高于客戶端(用戶代理)權重值。一般權重值跟對象,是否有!important,特異度和位置先后有關。在層疊順序中,以下權重值從小到大
(1)用戶代理樣式
(2)用戶一般樣式
(3)作者一般樣式
(4)作者重要樣式(!important)
(5)用戶重要樣式(!important)
(6)如果是兩個樣式來自相同的代碼,如都來自作者(代碼),并且它們的樣式聲明同樣重要,則根據特異度來計算,特異度高的會覆蓋特異度低的
(7)如果特異度也相同,則越往后的樣式優先級越高
為什么用戶設置的重要樣式比作者重要樣式優先級高,這樣做的原因是為了方便用戶實現一些特殊的要求,例如頁面字體大小的調整等。
選擇器特異度的計算
(1)如果一個聲明出現在元素的style屬性中,則將a計為1;
(2)b等于選擇器中所有ID選擇器加起來的數量和
(3)c等于選擇器中所有class選擇器和屬性選擇器,以及偽類選擇器加起來的數量和
(4)d等于選擇器中所有標簽選擇器和偽元素選擇器加起來的數量和
a-b-c-d即是選擇器的特異度,比較順序從a先比起,誰先大則優先級就越高。
注意:
.box{} /*特異度=0,0,1,0*/.box div{} /*特異度=0,0,1,1*/#nav li{} /*特異度=0,1,0,1*/p:first-line{} /*特異度=0,0,0,2*/style="" /*特異度=1,0,0,0*/
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。
新聞熱點
疑難解答