跳至內容
Astera Technology

用層次整理樣式,毋須不停加選擇器權重

把一般宣告分入基本層和元件層,按真正 cascade 次序查哪個值生效。

元件層較後,一般宣告因此勝出,即使前一層用 id 選擇器。

下載完整個案資料及參考答案 ↓

先看這個例子

基本層用 #note 設紅色,較後的元件層則用 .note 設綠色。兩者都是一般作者宣告,沒有 !important。

輸入與瀏覽器原生結果
情況輸入或查看方法結果與意思
基本層#note 紅色較前的層
元件層 .note 綠色較後的層勝出
計算結果讀 colorrgb(0,80,40)
下載可編輯 CSV ↓

瀏覽器怎樣處理

本例一般宣告先比較層次,再比較選擇器權重。這不表示層內樣式一定勝過未分層樣式。Important 宣告的層次優先方向相反,不屬本例。

一般未分層規則會勝過本例分層規則

反例加一條未分層 .note 規則。

反例原始碼,請另開例子核對
<style>body{margin:8px}</style>
<style>@layer base,components;@layer base{#note{color:rgb(120,0,0)}}@layer components{.note{color:rgb(0,80,40)}}.note{color:rgb(80,0,100)}</style><p id="note" class="note">工作坊筆記</p>

一般未分層宣告勝出,計算值為 rgb(80,0,100)。

試着修正

綠色勝出,是否證明 class 權重比 id 大?

查看參考答案

不是。這次先按層次分出勝負,尚未輪到權重比較。

  • 先記來源、important 和層次,再比選擇器。
  • 核對真正 color 值及完整規則脈絡。

原始例子檔案

相關資源