前端新手村 CSS Cascade 串接
「當你迷惘的時候,就回到原點想一想」-中華一番 蘭飛鴻
¶前言
網頁前端新手村系列文章,宗旨並不在技術本身的教導,重點放在技術與技術之間的脈胳關係。讓零碎的網頁前端技術的關鍵字,成為比較有系統性的視野。
讓一開始接觸網頁前端的新手們,有一個比較友善的系統來架構你的學習,至於技術本身的深入探討,就留給其它的高手們吧。
¶CSS Cascade[1]
Cascade 中文翻譯成「串接」。
Cascade 動作是由 Specificity 和 Ruleset order 作用,決定要套用的 CSS。
¶Specificity[2]
Specificity 在中文翻譯成「特定度」。
千言萬語,透過一個頁面可以說盡。
看不懂沒關係,只要繼續看下去。
¶定義 Specificity
首先,我們想知道 specificity 是多少,要計算 a, b, c, d 四個數字
所以,目的在搞懂這四個數字怎麼計算,就可以掌握 specificity
| (a, b, c, d) | 
- a
- style,直接寫在 HTML element 的- styleattribute,a = 1
 
- b
- b = 出現 id選取器的次數
 
- b = 出現 
- c
- c = 出現 class類別選取器的次數
- c = 出現 [attribute=value]屬性選取器的次數
- c = 出現 :pseudoclasses偽類選取器的次數
 
- c = 出現 
- d
- d = 出現 :sudoelements偽元素選取器的次數
- d = 出現 tagname類型(HTML標籤)選取器的次數
 
- d = 出現 
¶計算 Specificity
- a, b, c, d 彼此不換算。(很重要)
- a, b, c, d 各別只會相加
- 結果是四個數字
- 特例
- value後面加 !important直接在 a 前的第五位 +1
- *選取器,不佔任何分數 +0
 
- value後面加 
看個例子
| #nav-global > ul > li > a.nav-link /* 0, 1, 1, 3 */ | 
- a = 0: 沒有寫在 HTML 的 style
- b = 1: #nav-blobal
- c = 1: .nav-link
- d = 3: ul,li,a
¶Rulest order
Rulest order 翻譯成 規則集順序。
千言萬語,只要開「開發者模式」就可以看結果。

以結果來說圖中的 margin-top被覆寫。
¶定義 Rulest order
若出現兩個 Specificity 強度相同的 Ruleset ,晚宣告有較高的優先權。
是要改套件樣式,要掌握這個訣竅
看個例子
| #nav-global > ul > li > a.nav-link { | 
最後的字型顏色,是紅色的。
¶參考資料
                發表於