CSS詳細度計算ツール

CSSセレクタの詳細度スコアを計算、視覚化、比較します。カスケードでどのセレクタが勝つかを正確に確認できます。

このツールについて

CSS詳細度計算ツールは、CSSセレクタの詳細度を理解・比較するための無料ブラウザベースツールです。CSS詳細度は、複数のルールが同じ要素をターゲットにした場合にどのスタイルを適用するかをブラウザが決定するために使用するアルゴリズムです。より高い詳細度を持つセレクタはソース順に関係なく常に勝つため、詳細度を理解することはレイアウトやスタイリングの問題をデバッグするのに不可欠です。

詳細度は4部分のタプル(a, b, c, d)として計算されます。aはインラインスタイル、bはIDセレクタ、cはクラスセレクタ、属性セレクタ、擬似クラス、dは要素(タイプ)セレクタと擬似要素をカウントします。ユニバーサルセレクタ*、結合子(>+~ )、:where()擬似クラスの詳細度はゼロです。:not():is():has()擬似クラスは引数リストの中で最も詳細なセレクタの詳細度を取ります。

このツールはセレクタをリアルタイムで解析し、構成要素にトークン化して、詳細度レベルごとに各コンポーネントを色分けします(IDは赤、クラスは緑、要素は青)。最終スコアが表示されます。比較モードでは最大10個のセレクタを追加し、どれが勝つかをバーチャートで相対的な重みを示して即座に確認できます。CSSカスケードの問題をデバッグしたりスタイルシートをリファクタリングする際に非常に有用です。

!important宣言も検出され、通常の詳細度ルールを完全に上書きするため警告が表示されます。すべての処理はブラウザ内で行われ、データがサーバーに送信されることはなく、第三者スクリプトも関与しません。

使い方

  1. CSSセレクタ入力フィールドにCSSセレクタを入力します。入力中にリアルタイムで詳細度が計算されます。
  2. 入力の下にある色分けされた内訳を確認します。各トークンには詳細度レベル(ID、class、element)がラベル付けされています。
  3. Enterを押すか追加をクリックして、セレクタを比較リストに追加します。
  4. さらにセレクタを追加して(最大10個)並べて比較します。カンマ区切りのセレクタを入力すると一度に複数追加できます。
  5. プリセット例ボタンで一般的なセレクタ比較を読み込み、詳細度の仕組みを実際に確認します。
  6. 比較リストは最高から最低の詳細度順に自動的にソートされます。勝者のセレクタはトロフィーアイコンとゴールドの枠線でハイライトされます。
  7. すべてコピー(またはCtrl+Shift+Cを押す)ですべての結果をクリップボードにコピーするか、クリアでやり直します。

よくある質問

CSS詳細度とは何ですか?

CSS詳細度は、複数の競合するルールが一致する場合に、どのCSSプロパティ値を要素に適用するかをブラウザが決定するためのルールセットです。各セレクタに詳細度の重みが割り当てられ、最も高い重みを持つルールが勝ちます。詳細度はタプル(a, b, c, d)で表されます。a=インラインスタイル、b=ID、c=クラス/属性/擬似クラス、d=要素/擬似要素です。

!importantは詳細度にどう影響しますか?

!important宣言はセレクタの詳細度スコアを変更しません。代わりに、すべての通常の宣言よりも優先されるカスケードの別レイヤーを作成します。2つのルールが両方とも!importantを使用している場合、それらの間のタイブレークに詳細度が使用されます。!importantの多用はスタイルのオーバーライドやメンテナンスを困難にするため、悪い習慣と考えられています。

:not()、:is()、:has()の詳細度はどうなりますか?

:not()、:is()、:has()擬似クラス自体の詳細度はゼロです。ただし、引数リスト内の最も詳細なセレクタによって詳細度が決定されます。例えば、:is(#id, .class)は#id(0, 1, 0, 0)と同じ詳細度を持ちます。#idが最も詳細な引数だからです。

:where()の詳細度はどうなりますか?

:where()擬似クラスは、引数に関係なく常に詳細度がゼロです。これにより、簡単にオーバーライドできるベーススタイルの記述に便利です。例えば、:where(#id)の詳細度は(0, 0, 0, 0)ですが、:is(#id)の詳細度は(0, 1, 0, 0)です。

結合子は詳細度に影響しますか?

いいえ。子孫結合子(スペース)、子結合子(>)、隣接兄弟結合子(+)、一般兄弟結合子(~)などの結合子は詳細度に寄与しません。それらが接続する単純セレクタのみが重要です。同様に、ユニバーサルセレクタ*の詳細度もゼロです。

2つのセレクタが同じ詳細度の場合はどうなりますか?

2つのセレクタが同一の詳細度を持つ場合、カスケードはソース順をタイブレーカーとして使用します:スタイルシートで最後に出現するルールが勝ちます。これがCSSルールの順序が重要な理由であり、インポートの順序を変更したりファイル間でルールを移動したりすると予期しない動作が生じる可能性がある理由です。

データは安全ですか?

はい。CSS詳細度計算ツールはブラウザ内で完全に動作します。セレクタはJavaScriptを使用してローカルで解析・スコアリングされます。サーバーリクエスト、データ収集、第三者スクリプトは一切ありません。セレクタがデバイスから送信されることはありません。

関連ツール