層疊是幹什麼的呢?
是用來解決樣式衝突的
分為三個部分,比較順序是
- 優先級
- 特殊性(權重?特定性?網上說法不一)
- 源次序
首先是優先級,優先級能解決的,不用去比較後面的
優先級的比較順序是
- 作者樣式表!important
- 默認樣式表!important
- 作者樣式表
- 默認樣式表
優先級比較完還有衝突的話,就要比較特殊性
這裡比較的話,會生成四個數字比較(?,?,?,?)
樣式衝突的時候,會從第一個值開始比大小,哪個值大是哪個,一樣的話比下一位
第一個數字只能是 0 或者 1,當寫到內聯樣式裡時是 1,沒有就是 0,所以一般比較時沒有內聯樣式的話都是三個值比較(?,?,?)
第二個是選擇器裡 ID 的數量
第三個是選擇器裡類選擇器和偽類選擇器以及屬性選擇器的數量
最後一個是選擇器裡的元素選擇器數量
如果特殊性還沒有比較出來,那就要比較源次序
就是在源代碼裡書寫的順序後書寫的覆蓋先書寫的
ok, 比較順序就是這樣,最後給大家一個特殊性比較快速方法,不用自己算半天
打開 vscode,鼠標放到你寫的 css 上面