CSS詳細度計算ツール

セレクターを入力すると、その詳細度が3つの数字(a, b, c)で表示されます。2つ目のセレクターを加えると、同じプロパティを両方が指定したときにどちらのルールが優先されるかが分かります。

無料 ブラウザで動作 2026年11月12日木曜日確認済み

スタイルシートに書くとおりの、1つのセレクターです。例:#nav li.active > a:hover

1つ目と比べるセレクターです。空のままにすると、1つのセレクターの詳細度だけを表示します。

結果

詳細度(a, b, c) — aはIDセレクターの数、bはクラス、属性、疑似クラスの数、cは要素セレクターと疑似要素の数です。
優先されるルール — 2つ目のセレクターを入力したときに表示されます。
数えた部分

このツールはブラウザ内で動作します。入力した内容が当社に送信されることはありません。

使い方

  1. セレクターに、スタイルシートに書くとおりのセレクターを入力します。
  2. 2つ目のセレクター(任意)に別のセレクターを入力すると、2つを比べられます。空のままでも構いません。
  3. 1つ目のセレクターの詳細度(a, b, c)を読みます。2つ入力した場合は、優先されるルールも確認します。
  4. 数えた部分の表で、各セレクターのどの部分がどの数字になったかを確かめます。

3つの数字の数え方

Selectors Level 3勧告(英語)は、セレクターを3つの列で数えると定めています。このツールは、数字を左から順に比べます。最初にa、次にb、最後にcです。全称セレクターの*と、>や+のようなコンビネーターは数えません。

  • aはIDセレクターの数です。例:#nav。
  • bはクラスセレクター(例:.active)、属性セレクター(例:[href])、疑似クラス(例::hover)の数です。
  • cは要素セレクター(例:liやa)と、疑似要素(例:::before)の数です。

引数をもつ疑似クラス

:is()、:not()、:has()は、その引数のうちで最も詳細度の高いセレクターとして数えられます。そのため、:is(#a, .b)は(1, 0, 0)です。:where()は何も数えません。:nth-child()は、疑似クラス1つと、「of S」のリストの中で最も詳細度の高いセレクターとして数えられます。そのため、:nth-child(even of li, .item)は(0, 2, 0)です。これらの規則はSelectors Level 4の草案(英語)によるもので、草案は編集中の版であり、変わることがあります。

このツールがしないこと

  • ::part(x)のように引数をもつ疑似要素は、疑似要素1つとして数えます。引数は読みません。
  • &によるネスティングは読みません。また、1つのボックスに1つのセレクターを入力する仕様のため、カンマで区切られたリストは扱いません。
  • スタイルシートは見えないため、詳細度が同じときは後のルールが優先すると表示し、順序の判断は利用者に任せます。

計算例:ナビゲーションバーのリンク

1つ目のセレクター#nav li.active > a:hoverには、IDが1つ(#nav)あります。クラスと疑似クラスは2つ(.activeと:hover)、要素セレクターも2つ(liとa)です。詳細度は(1, 2, 2)です。2つ目のセレクター#nav aは、IDが1つと要素セレクターが1つなので、詳細度は(1, 0, 1)です。aは同じで、bとcは1つ目の方が高いため、1つ目のセレクターが優先されます。

セレクター a b c
#nav li.active > a:hover 1 2 2
#nav a 1 0 1

よくある質問

IDはなぜ最初の列で数えられるのですか?

このツールは列を左から順に比べるので、IDの列aが最初に決まります。IDが1つ多いセレクターはaが高くなり、その場合はbとcを見ることはありません。

ルールの順番は関係がありますか?

詳細度が同じ2つのセレクターの場合だけ関係します。CSSカスケード Level 4仕様(英語)は、その場合に文書の中で最後の宣言が効くと定めているので、後のルールが優先されます。

:not(#a)はなぜ詳細度を加えるのですか?

:not()という疑似クラス自体は数えませんが、その引数は数えます。Selectors Level 3の例、#s12:not(FOO)は(1, 0, 1)です。#s12のIDが1つと、引数FOOの要素セレクターが1つです。

全称セレクターやコンビネーターは何か加えますか?

いいえ。全称セレクターは無視され、>、+、~のようなコンビネーターも数えません。Level 3の節にある例の*は、詳細度が(0, 0, 0)です。

このツールはインラインスタイルや!importantを含みますか?

いいえ、このツールは1つのセレクターを数えるだけです。カスケードは詳細度より前に由来と重要度を比べるので、!importantを付けたルールやインラインスタイルは、セレクターの点数に関係なく優先されることがあります。比べるのは、同じ重要度で同じプロパティを指定する2つのセレクターだけにしてください。

入力したセレクターはどこかに送られますか?

いいえ。解析はブラウザの中で行われ、入力した内容は保存されず、当サイトのサーバーにも送られません。結果は、スタイルシートを変える前に確かめてください。

出典

数値と文章の最終確認日:2026年11月12日木曜日。

当サイトの運営に必要なCookieを使用します。お客様の同意があれば、Googleは広告用Cookieを使い、パーソナライズ広告を表示します。拒否された場合も広告は表示されますが、パーソナライズはされません。