upstr web

CSSの詳細度

January 22, 2020

CSSを設計する際に、理解しておきたいのが「CSSの詳細度(Specificity)」です。

基本的には、CSSは後から宣言されたルールが適用されます。

しかし詳細度が高いセレクタは、宣言された順番に関係なく優先されます。

CSSの詳細度

CSSの詳細度を高い順に並べると、下記の通りになります。

  • !important
  • style属性
  • IDセレクタ
  • クラス・属性・擬似クラスセレクタ
  • 要素型セレクタ・擬似要素
  • ユニバーサルセレクタ

1.!important

!importantは、最も詳細度が高くなる宣言です。 なるべく使用を避けるべきとされています。

p {
 color: red !important;
 color: blue;
}

2.style属性

style属性とは、htmlの中にインライン記述するCSSのスタイルです。 レイアウトや装飾を修正する際、htmlとCSSの一元管理がむずかしくなるので、 !importantと同様になるべく使用を控えるべきとされています。

3.IDセレクタ

IDセレクタは、1ページに対して1度しか使えない固有のセレクタです。 JavaScriptを使う場合に割り当てることがありますが、詳細度が高いのでCSSでの使用は控えるべきとされています。

/* ID */
#box {
 color: red;
}

4.クラス・属性・擬似クラスセレクタ

これらのセレクタは、同じドキュメント内で何度も使用することができます。

詳細度が同じなので、後から書いたものが優先されます。

/* クラス */
.box {
 color: red;
}
/* 属性 */
a[target="_blank"] {
 color: red;
}
/* 擬似クラス */
.box:hover {
 color: red;
}

5.要素型セレクタ・擬似要素

要素型セレクタは、