css.svg

【CSS】スタイルの優先順位

CSS

優先順位とは

CSS には、どのスタイルを適用するかという優先順位があります。

基本として後に読み込まれたスタイルが適用されます。

CSS
p { color: red; }
p { color: blue; }
p { color: green; }  /* これが適用される */

しかし、以下の例では一番最初に読み込まれたスタイルが適用されます。

CSS
p.attention { color: red; }  /* これが適用される */
p { color: blue; }
p { color: green; }

このように、実際はセレクターの指定方法などでその優先順位は変わります。

スタイルが適用されない場合は、この優先順位が考えられていない可能性があります。

詳細度

詳細度は、セレクター毎に決められた優先順位の重みのことです。 以下のように 3 段階あり、詳細度の高い順にその数が多いほど優先順位が高くなります。

詳細度セレクター
ID#text
クラス、属性、疑似クラス.text, [type="text"], :hover
要素、疑似要素p, ::before

例えば以下のpタグにスタイルを適用することを考えます。

HTML
<div id="div" class="div">
  <p id="text" class="text">abcde</p>
</div>
セレクター
p001
.text010
#text100
p.text011
p#text101
div > p002
.div > p010
#div > p101
.div > .text020
#div > #text200

スタイルが適用されるのは、高の数が一番多いセレクターになります。 同じ数の場合は中の数、また同じであれば小で比較します。

すべて同じであれば後に読み込まれたものが適用されます。

詳細度は以下のサイトで確認することができます。

Specificity Calculator

style 属性

HTML
<p style="color: red">abcde</p>

style 属性に指定したスタイルは、CSS のスタイルよりも優先されます。

important

CSS
.text { color: red !important; }

CSS のスタイルに!importantを付与することで、最も優先されるスタイルとなります。 複数指定された場合は、後に読み込まれたものが適用されます。

!importantは既存のスタイルを破壊する恐れがあるため、多用することはオススメされていません。