【初心者向け】CSSの優先順位をマスターして、思い通りのデザインを実現しよう
CSS の優先順位とは?
優先順位は以下の順番で決定されます。
- !important
- インラインスタイル
- IDセレクタ
- クラスセレクタ、属性セレクタ、疑似クラス
- タイプセレクタ
例:
p {
color: red; /* タイプセレクタ */
}
#example {
color: blue; /* IDセレクタ */
}
.button {
color: green; /* クラスセレクタ */
}
a[href]:hover {
color: yellow; /* 属性セレクタ、疑似クラス */
}
span {
color: purple; /* タイプセレクタ */
}
#example span {
color: orange; /* IDセレクタとタイプセレクタの組み合わせ */
}
#example span !important {
color: black; /* !importantで強制的に優先順位を上げる */
}
この例の場合、#example span
要素には、以下のスタイルが適用されます。
color: black;
(!important で強制的に優先順位を上げている)color: orange;
(IDセレクタとタイプセレクタの組み合わせ)
その他の注意点
- 同じセレクタの種類の場合は、後に記述されたスタイルの方が優先されます。
- 属性セレクタは、要素名やクラスセレクタよりも優先順位が低くなります。
- 子要素に指定されたスタイルは、親要素に指定されたスタイルよりも優先されます。
サンプルコード:CSS の優先順位
HTML コード
<!DOCTYPE html>
<html>
<head>
<title>CSS 優先順位の例</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<p class="example">これはサンプルの段落です。</p>
<span id="important">重要!</span>
</body>
</html>
CSS コード
/* style.css */
p {
color: red; /* タイプセレクタ */
}
.example {
color: blue; /* クラスセレクタ */
}
#important {
color: green; /* IDセレクタ */
}
#important !important {
color: orange; /* !important で強制的に優先順位を上げる */
}
このコードで何が起こるか
<p>
要素には、赤い文字色が適用されます。これは、p
要素に指定されたスタイルが最も優先順位が高いからです。.example
クラスを持つ<p>
要素には、青い文字色が適用されます。これは、.example
クラスセレクタがp
タイプセレクタよりも優先順位が高いからです。<span>
要素には、緑色の文字色が適用されます。これは、#important
IDセレクタが.example
クラスセレクタよりも優先順位が高いからです。- ただし、
#important
要素には、オレンジ色の文字色が適用されます。これは、!important
キーワードが使用されているため、#important
IDセレクタのスタイルが強制的に優先順位が最高になっているからです。
この例は、CSS の優先順位がどのように機能するかを理解するのに役立つ基本的な例です。実際の CSS コードでは、さまざまなセレクタとスタイルが組み合わされて使用されます。上記のルールを理解することで、CSS コードをより効果的に書くことができます。
以下の追加的な例は、CSS の優先順位をさらに理解するのに役立ちます。
例 1:子要素のスタイルが親要素のスタイルを上書きする
div {
background-color: #f0f0f0;
}
.box {
background-color: #ccc;
}
.box p {
background-color: #fff;
}
この例では、.box p
要素には白い背景色が適用されます。これは、子要素である .box p
に指定されたスタイルが、親要素である .box
に指定されたスタイルよりも優先順位が高いからです。
例 2:属性セレクタと疑似クラスの組み合わせ
a[href]:hover {
color: yellow;
}
この例では、マウスポインタがリンクの上に置かれたときに、そのリンクの文字色が黄色に変わります。これは、a[href]
属性セレクタと :hover
疑似クラスが組み合わされているためです。
これらの例は、CSS の優先順位がどのように複雑な方法で使用されるかを示しています。しかし、基本的なルールを理解することで、CSS コードをより効果的に書くことができます。
CSS の優先順位を変更するその他の方法
!important
キーワードは、セレクタに指定されたスタイルを強制的に最優先にするために使用できます。これは、他の方法で優先順位を制御できない場合に役立ちます。
p {
color: red;
}
#important {
color: green !important; /* !important で強制的に優先順位を上げる */
}
インラインスタイルは、HTML タグ内に直接スタイルを記述する方法です。インラインスタイルは、他のすべてのスタイルよりも優先順位が高くなります。
<p style="color: blue;">これはインラインスタイルの例です。</p>
上記の例では、<p>
要素には青い文字色が適用されます。これは、インラインスタイルが p
要素に直接指定されているためです。
セレクタの具体性は、セレクタが要素をどれだけ具体的に識別するかに基づいて決まります。具体性の高いセレクタは、具体性の低いセレクタよりも優先順位が高くなります。
以下のセレクタは、具体性の高い順に並んでいます。
- ID セレクタ (
#example
) - 属性セレクタ (
a[href]
) - 疑似クラス (
a:hover
)
子要素の組み合わせは、親要素と子要素を組み合わせてセレクタを作成する方法です。子要素の組み合わせセレクタは、親要素に指定されたスタイルよりも優先順位が高くなります。
.container p {
color: red;
}
上記の例では、.container
要素の子要素であるすべての <p>
要素には赤い文字色が適用されます。これは、子要素の組み合わせセレクタ .container p
が使用されているためです。
これらの方法は、状況に応じて使い分けることができます。一般的には、!important
キーワードの使用は控えめにし、セレクタの具体性や子要素の組み合わせを使用して優先順位を制御することをお勧めします。
CSS の優先順位は、複数のスタイルが同じ要素に適用される場合に、どのスタイルが適用されるかを決定する重要なルールです。上記のルールとテクニックを理解することで、CSS コードをより効果的に書くことができます。
html css