AZ Tools

CSS 詳細度計算機

開発

2 つの CSS ルールが同じ要素を対象とすると、カスケードは詳細度が高い方を選ぶ — (ID, クラス/属性/疑似クラス, タイプ/疑似要素) でカウント。本ツールはセレクタを解析し、各部分にウェイト付与(#id +1·0·0、.class +0·1·0、div +0·0·1)、:is()·:not()·:has()(最高ウェイト引数勝ち)·:where()(常に 0)のような疑似クラス処理。2 つのセレクタを入力してどちらがカスケードで勝つか確認 — ルールが適用されない理由を推測する必要なし。

ID

1

クラス/属性/疑似

2

タイプ/疑似要素

3

詳細度
(1, 2, 3)

トークン分析

  • #navID+(1, 0, 0)
  • ulタイプ+(0, 0, 1)
  • liタイプ+(0, 0, 1)
  • .activeクラス+(0, 1, 0)
  • aタイプ+(0, 0, 1)
  • :hover疑似クラス+(0, 1, 0)

2 つのセレクタを比較

2 つ目のセレクタを貼り付けてどちらが勝つか確認。

セレクタ A

(1, 2, 3)

← A 勝ち

セレクタ B

(0, 1, 3)

インラインスタイル·!important·ソース順すべてセレクタ詳細度に勝つ。本ツールはセレクタ自体から (ID, クラス, タイプ) タプルのみ計算。

使い方

  1. CSS セレクタを入力または貼り付け — 入力に応じて分析更新。
  2. (ID, クラス, タイプ) 数字を確認 — タプル高い方がカスケード勝利。
  3. 比較ボックスに 2 つ目のセレクタを貼り付け、どちらが勝つか確認。

よくある質問

なぜ 1 つでなく 3 つの数字?
詳細度は左から列ごとに比較: ID 1 つはどんな数のクラスにも勝つ; クラス 1 つはどんな数のタイプセレクタにも勝つ。(0,1,0) + (0,0,10) = 20 のように足す直感は CSSWG が警告する典型的な誤り。
:is()·:not()·:has() のカウント?
最高ウェイト引数の詳細度を取る。:is(#a, .b) = 1·0·0、:not(.a, .b) = 0·1·0。:where() は常に 0·0·0 — 詳細度 0 オーバーライドに便利。
::before などの疑似要素は?
疑似要素(::before·::after·::first-line)はタイプセレクタとしてカウント(0·0·1)。レガシーの単一コロン形式(:before·:after)も疑似要素として認識。
インラインスタイルは含む?
いいえ — インラインスタイルは別の 'a' バケット(1·0·0·0)で、本ツールはモデル化せず、セレクタにインラインは書けない。インラインオーバーライドには !important を使用。

関連ツール