如果一個元素在多個地方定義了某個樣式屬性,最后哪個起作用呢?
例如:在body中定義了字體的大小,元素p的屬性style中定義了文字顏色,內部樣式表和外部樣式表中也都定義了元素p的文字顏色,而且某段文字還用屬性id和類名都定義了文字顏色。這樣會導致復雜的樣式層疊關系,到底誰可以起作用呢?
如果一個元素被具有相同屬性名的多個樣式重復作用,也就是出現了樣式層疊,CSS需要通過這些樣式的選擇器的特殊性來進行選擇其中的一個樣式。選擇器越特殊優先權越高,選擇器優先權最高的樣式被選中。如果最高優先權的有多個,則要看這些樣式中哪個樣式離這個元素最近,離得最近的被選中。
選擇器的特殊性可以根據下面的規則來確定:
(1)對于id選擇器,每個特殊性加0100;
(2)對于類選擇器,屬性選擇器,偽類選擇器,每個特殊性加0010;
(3)對于標簽選擇器和偽元素選擇器,每個特殊性加0001;
(4)每個元素只能定義一個行內樣式,行內樣式的特殊性為1000;
(5)對于結合符和通用選擇器,它對特殊性沒有貢獻,其特殊性為0000;
(6)對于繼承得來的選擇器沒有任何特殊性,其特殊性為0000;
(7)加上!important的樣式具有最高的優先權。
優先權比較:
0100 > 0020;
0021 > 0020;
特殊性計算例子
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com