Version: 2022.3
言語: 日本語
疑似クラス
USS プロパティ

セレクターの優先順位

ある要素が複数のセレクターに一致する場合、Unity はいくつかの要因を考慮してどのセレクターを優先するかを決定します。

Unity がどのように優先順位を決定するかは、競合するセレクターが同じスタイルシートにあるか、異なるスタイルシートにあるかによって異なります。

同じスタイルシート内のセレクターの優先順位

ある要素が同じスタイルシートの複数のセレクターに一致する場合、最も高い 詳細度 を持つセレクターが優先されます。

両方のセレクターが同じ 詳細度 を持つ場合、USS ファイルで最後に表示されたセレクターが優先されます。

異なるスタイルシート内のセレクターの優先順位

ある要素が異なるスタイルシートの複数のセレクターに一致する場合、Unity は以下の要因に応じて優先順位を決定します。

  1. スタイルシートのタイプ: ユーザー定義のスタイルシートのセレクターは、デフォルトの Unity スタイルシートのセレクターよりも優先されます。
  2. セレクターの詳細度: 両方のセレクターが同じタイプのスタイルシートにある場合、詳細度 が最も高いセレクターが優先されます。
  3. 要素階層内のスタイルシートの位置: 両方のセレクターが同じ詳細度を持つ場合、スタイルシートが要素階層内で最も低い位置にあるセレクターが優先されます。
  4. スタイルシート内のセレクターの位置: 同じ階層レベルにある複数のスタイルシートを適用する場合、USS ファイルの最後に最も近いセレクターが優先されます。

セレクターの詳細度

セレクターの詳細度は、関連性の指標です。詳細度が高いほど、セレクターが一致する要素との関連性が高いことを意味します。

  • 名前 セレクターは クラス セレクターよりも詳細です。
  • クラス セレクターは セレクターよりも詳細です。
  • セレクターは ユニバーサル (*) セレクターよりも詳細です。
  • ユニバーサル セレクターは最も低い詳細度を持ちます。

スタイルオーバーライド

UI Toolkit では、以下のように要素にスタイルを設定できます。

要素に複数のスタイリングメソッドを適用する場合、スタイルのオーバーライドを受けます。

適用スタイルは継承スタイルをオーバーライドする

たとえ、継承したスタイルがより高い詳細度を持つセレクターで定義されていても、要素を直接ターゲットにするスタイルは、その要素が継承したスタイルよりも優先されます。

インラインスタイルは USS スタイルをオーバーライドする

UXML ドキュメント内の要素に適用するインラインスタイルは、USS スタイルよりも優先されます。それらは、USS セレクターよりも高い詳細度を持ちます。

ノート: USS は、CSS のスタイル宣言をオーバーライドするために使われる !important ルールをサポートしていません。

C# スタイルはインラインスタイルと USS スタイルをオーバーライドする

C# スクリプトで設定したスタイルは、UXML ドキュメントで設定した USS スタイルやインラインスタイルをオーバーライドします。これらは最も高い詳細度を持ちます。

その他の参考資料

疑似クラス
USS プロパティ