css繼承和層疊的詳解

來源:互聯網
上載者:User
在前面介紹了如何利用文檔結構和css選取器為元素應用各種豐富的樣式,今天來好好聊聊css的層疊和繼承,先說說概念。

繼承:一個元素向其後代元素傳遞屬性值所採用的機制,說的通俗點,就是元素的某些屬性可以通過繼承從而傳遞給子項目的。

如:

<p><span>測試繼承</span>這裡不是span中的內容</p>

p{color:red},這裡便會看到p元素和審判元素中的文字都變為紅色,因為p元素的屬性被span繼承過來了。但是有的屬性是無法通過繼承來傳遞的,
如border就不會通過繼承獲得。其實繼承很好理解,但要配合層疊來一起理解。

層疊:確定一個元素究竟該用哪些樣式時,就需要把繼承和聲明的特殊性拿來一起考慮,從而該啟用哪一個css樣式,這個過程就被稱為層疊。

上面提到了特殊性,那我們就來重點看看。

先拋出一個問題,下面2對規則,哪條會獲勝?

h1{color:red}
body h1{color:blue}

h2{color:red}
h2.color{color:green}

上面的2對規則中,顯然只能有一個勝出,然而哪個該勝出嘞?答案就在每個選取器的特殊性。

一個選取器的具體特殊性如下:
1.對於規則中給定的每個ID屬性值,特殊性加0,1,0,0
2.對於規則中每個類選擇符合屬性選擇符以及偽類,特殊性加0,0,1,0
3.對於規則中每個元素和虛擬元素,特殊性0,0,0,1
4.結合符和萬用字元對特殊性沒有任何貢獻。
5.內聯樣式的特殊性加1,0,0,0
6.繼承的屬性沒有特殊性,甚至連0特殊性都沒有,所以要低於萬用字元的。
7.!important總會勝出。

所以對於上面的兩組規則就有了結果:

h1{color:red} 0,0,0,1
body h1{color:blue} 0,0,0,2

h2{color:red} 0,0,0,1
h2.color{color:green} 0,0,1,0
所以red和green會生效。

於是,層疊的規則如下:

1.找出你代碼裡面所有的選擇符。

2.規則的顯示權重排序和起源排序,標記!important的樣式最優先,且有三種起源:製作者,讀者,使用者代理程式。

3.元素宣告的特殊性排序。

4.元素宣告的出現順序排序。


更多css繼承和層疊的詳解相關文章請關注topic.alibabacloud.com!

  • 相關文章

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.