folder作り方を知りたい

CSSの優先順位とは?CSSカスタマイズがうまくいかないときに確認したい基礎知識!

CSSの優先順位とは?CSSカスタマイズがうまくいかないときに確認したい基礎知識!

CSSの優先順位とは?CSSカスタマイズがうまくいかないときに確認したい基礎知識! - https://do.gt-gt.org/css-priority/

CSS(スタイルシート)を編集しているときに、書き足したCSSがなぜか適用されなくて困ってしまう……こんなトラブルは、個人サイト運営あるあるではないでしょうか。

CSSが適用されない理由にはさまざまありますが、そのほとんどがCSSの優先順位が間違っていることが原因で起こります。つまり、CSSの優先順位さえ正しく理解すれば、CSSをサクサク編集できるということです

この記事では、CSS初心者向けに、CSSの優先順位についてわかりやすく解説します。

CSSの基本ルールをおさらいしよう

まずは、CSSの基本的なルールをおさらいしましょう。

CSSでは、スタイル(デザイン)を適用したいセレクタ(要素)を指定する

CSS(スタイルシート)では、「どのHTML要素にデザイン(CSS記述)を当てるか」を指定する必要があります。そのときに使うのがセレクタと呼ばれるものです。

たとえば、次のようなコードがあるとします。

p {
color: red;
}

この例ではpがセレクタです。つまり「すべての<p>タグの文字を赤くする」という指定になります。

セレクタには、HTMLタグそのもの(タグセレクタ)のほかに、クラス名.exampleやID名#example、特定の条件a:hoverなどに合わせたものもあります。

セレクタの種類 書き方 対象
タグセレクタ タグ名 指定したHTMLタグすべて p {} → すべての段落
クラスセレクタ .クラス名 指定したクラスを持つ要素 .btn {} → class=”btn”の要素
IDセレクタ #ID名 指定したIDを持つ要素(1つだけ) #header {} → id=”header”
属性セレクタ [属性名=値] 特定の属性を持つ要素 [type="text"] {}
擬似クラス :状態 特定の状態や条件のときの要素 a:hover {} → マウスホバー時のリンク
擬似要素 ::部分 要素の一部(最初の文字など) p::first-line {}
子孫セレクタ A B Aの中にあるB div p {}→divの中のp
子セレクタ A > B Aの直下にあるB ul > li {}→ulの直下にあるli

CSSを書く場所もいろいろある

HTMLテンプレートでは基本的に、style.cssのような名前の外部ファイルにCSSを記述し、それをHTMLファイルに読み込ませる形でスタイルを適用します。

その他にも、CSSを記述、適用する方法はあります。

  • HTMLファイル内に、style属性として書き込む(インラインスタイル)
  • HTMLファイル内に、<style>タグとして書き込む
  • CSSファイルを読み込む(style.cssなどの外部ファイル。前述した一般的な方法)
ここまで説明したことでお気づきの方もいるかもしれませんが、CSSでは主にセレクタの指定方法やCSSを記述する場所によって優先順位が変わります

CSSの優先順位の基本ルール

優先度が同じ場合は、下に書いたものが優先される

最初に覚えておくべきことは、CSSでは、優先度の同じ指示があった場合には下に書いたものが優先されるということです。例えば、以下のような記述があったとしましょう。

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

この場合は、pという同じセレクタに対して異なる指示が書かれていますが、下段のcolor:blue;が優先されます

セレクタの優先度は、ID>クラス、属性、疑似クラス>タグセレクタ

セレクタ指定の優先度は、以下の通り。

セレクタの優先順位図解

  • ID指定が最も優先度が高い
  • クラス、属性、疑似クラスが次に優先度が高い
  • タグセレクタは優先度が低い

つまり、以下のような記述がある場合は……どうなるでしょうか? 考えてみてください。

p { color:red; }
p.abc { color:green; }
p#xyz { color:blue; }

この場合は、以下のような処理になります。

  • クラスやIDを持たないp要素は、color:red;
  • abcクラスを持つp要素は、color:green;
  • ID「xyz」を持つp要素は、color:blue;
  • abcクラスと、ID「xyz」の両方を持つp要素は、color:blue;

インラインスタイルはID指定よりも優先される

セレクタ指定で最強のID指定ですが、インラインスタイルはID指定よりも優先されます。インラインスタイルというのは、HTML記述において、以下のような記述のことです。

<p id="xyz" style="color:pink;">ここの文字色はpinkになります</p>

pタグの中にstyle="color:pink;"と書かれていて、HTML記述の中で直接スタイルが指定されていますね。この場合、IDセレクタにcolorが指定されていても無視されて、インラインスタイルが優先されます

!importantをつけると全てに優先される

インラインスタイルよりもさらに優先されるのが、!importantを使用した場合です。例えば、以下のような記述がある場合を考えます。

p#xyz { color:blue !important; }
<p id="xyz" style="color:pink;">ここの文字色はpinkになります</p>

p要素に対して、ID指定とインラインスタイルが指示されています。これだけなら、インラインスタイルであるcolor:pink;が優先されますが、CSSで!importantが記述されているため、実際にはp#xyzに対して指示されたcolor:blue;が適用されます

全てに優先される!importantはとても便利そうに見えますが、考えなしに使いすぎると、のちのちCSSを編集するときに優先順位が分からなくなってしまう危険があります。使うのは奥の手と考えましょう。

この場合はどっちが優先される?

では、以下のような場合は、どちらの記述が優先されるでしょうか? 考えてみましょう。

  • .boxdiv.box
  • pheader p
  • div.boxdiv.box.red
  • div.box.reddiv.box#blue

ちなみに、正解は以下の通りです。

  • .boxよりもdiv.boxが優先される(ただのboxクラスより、boxクラスのついたdiv要素という指定の方が詳細だから)
  • pよりもheader pが優先される(ただのpよりも、header要素の中のpという指定の方が詳細だから)
  • div.boxよりもdiv.box.redが優先される(複数のクラスを持つdiv要素まで絞られるから)
  • div.box.redよりもdiv.box#blueが優先される(クラスセレクタよりもIDセレクタのほうが優先されるから)

どうしてもCSSの書き方が分からない場合は……

ここまででCSSの優先順位を見て勉強してきたけど、どうしても作業中のCSSが適用されなくて困ってる! そんなときにはデベロッパーツールを使ってみましょう。

なんだか難しそうに見えるかもしれませんが、デベロッパーツールを使いこなせるようになれば、「ここのデザインを変えたいけど、どうCSSを編集したらいいのか分からない……」という場面はほぼなくなります! CSS編集を頑張りたい方には必要不可欠のツールです。ぜひ触ってみてください。

この記事を書いた人

ガタガタ

このサイトと、このサイトの掲載記事のほとんどと、このサイトで配布しているプログラムやテンプレートのすべてを作った人。絵を描いたり、文章を書いたりして暮らしています。

関連記事

【イラスト・写真展示】Lightboxの設置方法と使い方
folder作り方を知りたい favorite 8

【イラスト・写真展示】Lightboxの設置方法と使い方

個人サイト向けサービス「erla」とは?初心者でもカンタンにサイトを作れるサービスを紹介!
folder作り方を知りたい favorite 130

個人サイト向けサービス「erla」とは?初心者でもカンタンにサイトを作れるサービスを紹介!

【2024年版】個人サイトの作り方を難易度別で3つ紹介!カンタンお手軽な方法からガッツリ制作まで!
folder作り方を知りたい favorite 285

【2024年版】個人サイトの作り方を難易度別で3つ紹介!カンタンお手軽な方法からガッツリ制作まで!

SNSアカウントをまとめたい人必見!カンタンにプロフィールページが作れるサービス4選
folder作り方を知りたい favorite 15

SNSアカウントをまとめたい人必見!カンタンにプロフィールページが作れるサービス4選

【初心者向け】CSS編集の基本を覚えてサイトのデザインを自分好みにアレンジしよう
folder作り方を知りたい favorite 40

【初心者向け】CSS編集の基本を覚えてサイトのデザインを自分好みにアレンジしよう

【初心者向け】創作・同人サイトをいい感じに作りたい人のためのWordPressの機能の使い方
folder作り方を知りたい favorite 65

【初心者向け】創作・同人サイトをいい感じに作りたい人のためのWordPressの機能の使い方