HTML・CSS
HTML/CSS入門編|6章:よく使うセレクタを学ぼう
INDEX
目次

6章:よく使うセレクタを学ぼう

本章では、コーディングにおいて必須の、よく使うCSSセレクタを学びます。
演習素材について
本章では、「6章よく使うセレクタを学ぼう」フォルダ内の演習データを使用します。
6章よく使うセレクタを学ぼう」フォルダの中には、「start」と「fin」フォルダが入っています。
  • 6章よく使うセレクタを学ぼうフォルダ
    • start:フォルダ内には作業前のデータが入っています。
    • fin:フォルダ内には完成データが入っています。
演習を行う際には、「start」フォルダ内のファイルを使用してください。
自分で書いたコードがうまく表示されないときは、「fin」フォルダ内の完成データとの違いを探してみると良いでしょう。

※「HTML/CSS入門編 はじめに - Webページのことを知ろう」の「【0-4】HTML/CSS 入門編 演習素材のダウンロード」節で、本教材の演習で使用するデータをまとめてダウンロードすることができます。
演習の準備
  1. start」フォルダ内のpasta-recipe.htmlと「css」フォルダ内のstyle.cssをエディターで開きます。
  2. ブラウザプレビューします。
■ 演習ファイルのブラウザプレビュー
 (15412)

  • このファイルの内容は、前章「HTML/CSS入門編 5章 CSSの基本を学ぼう」で作成したpasta-recipe.htmlと同じです(背景画像のCSSをコメントアウトしてあります)。
  • 前章の学習で自分で作成したファイルをそのまま流用しても構いません。
    • その場合はbody要素に設定した背景画像関連のCSSをコメントアウトしておいてください。
■ 背景画像関連のCSSをコメントアウトする
body {
  background-color: #fffad7;
  /* background-image: url(../images/bg/italy-photo.jpg);
  background-repeat: no-repeat;
  background-position: center top;
  background-size: cover;
  background-attachment: fixed; */
}
HTML/CSS入門編 サンプルコード6-1
コメントアウトとは?
  • /**/ で囲まれた部分は「コメント」と見なされ、ブラウザはそこを無視します。
  • 一時的にスタイルを無効にして表示を確認したい場合や、コード内に後から見返すためのメモを残したい場合などに使われる、非常に便利な機能です。

【6-1】よく使うCSSセレクタ

数種類のセレクタを使いこなせるようになることは、CSSコーディングが上達するために必要不可欠なステップです。
まずは、最もよく使うセレクタである「要素セレクタ」「classセレクタ」「子孫セレクタ」の3種類をしっかりと学習しましょう。

要素セレクタ

body {
  font-family: sans-serif;
}
HTML/CSS入門編 サンプルコード6-2
  • 前章で学んだCSSの基本は、この要素セレクタの使い方を中心に学びました。
  • 要素セレクタ(Element Selector)は、タグセレクタ、タイプセレクタと呼ばれることもある最も基本的なCSSのセレクタです。
  • タグの要素名をセレクタとしてCSSを記述する方法です。
  • 要素セレクタはページ全体に適用したい書体(font-family)などを、body要素に設定するとか、すべてのp要素に同じ文字サイズ(font-size)を設定するなど、一貫したデフォルトのスタイリングを設定する際に、非常に有用です。
  • しかし、ページ内の特定の要素のみにスタイリングの範囲を限定したいときには、要素セレクタでは対応しきれない場面がありますので、後述するclassセレクタなどと組み合わせて併用する必要があります。

classセレクタ

classセレクタ(class selector)は、特定の要素に対してスタイリングの設定をするためのセレクタです。
例えば、pasta-recipe.htmlには、以下の2箇所にpタグが記述されています。
<p>
  このページでは、みんなが大好きなパスタ、ペペロンチーノとカルボナーラのレシピをご紹介します!<br>
  ぜひ自分でつくって食べてみてね!
</p>

・・・中略・・・

<p>
        Copyright &copy; pasta for everyone All Rights Reserved.
</p>
HTML/CSS入門編 サンプルコード6-3
  • 上記のp要素に対して、要素セレクタで次のCSSが設定されています。
  • 下がブラウザプレビューです。
    • 赤い斜線の背景画像が指定された箇所がp要素です。
p {
  font-size: 20px;
  line-height: 1.75;
  text-indent: 1em;
  font-style: italic;
  background-image: url(../images/bg/stripe.png);
}
HTML/CSS入門編 サンプルコード6-4
■ ブラウザプレビュー
 (15432)

 (15433)

同じpタグでマークアップされたテキストには、同じスタイルが適用されています。
これを、次のように、どちらもpタグでマークアップしたままで、異なるスタイリングが適用されるように変更したいと思います。
そのようなときに役に立つのが、classセレクタです。
■ スタイリングする要素1
<p>
  このページでは、みんなが大好きなパスタ、ペペロンチーノとカルボナーラのレシピをご紹介します!<br>
  ぜひ自分でつくって食べてみてね!
</p>
HTML/CSS入門編 サンプルコード6-5
■ 設定するプロパティ
プロパティ
バリュー(値)
font-size
20px
line-height
1.75
■ 完成見本
 (15441)

■ スタイリングする要素2
<p>
        Copyright &copy; pasta for everyone All Rights Reserved.
</p>
HTML/CSS入門編 サンプルコード6-6
■ 設定するプロパティ
プロパティ
バリュー(値)
font-size
14px
text-align
center
■ 完成見本
 (15447)

classセレクタの設定手順
1. それぞれのタグにclass属性で任意の名前(半角英数字と「-(ハイフン)」「_(アンダースコア)」が使える)をつける。
   ※class属性でつけた任意の名前のことをclass名と呼びます。
<p class="main-text">
  このページでは、みんなが大好きなパスタ、ペペロンチーノとカルボナーラのレシピをご紹介します!<br>
  ぜひ自分でつくって食べてみてね!
</p>

・・・中略・・・

<p class="copyright-text">
        Copyright &copy; pasta for everyone All Rights Reserved.
</p>
HTML/CSS入門編 サンプルコード6-7
2. 次の書式でCSSセレクタを記述する。
 class名の先頭に「.(ドット)」をつけたものがclassセレクタです。
 ※元々p要素に設定されていたCSSは削除するか、コメントアウトしておきます。
/* p {
  font-size: 20px;
  line-height: 1.75;
  text-indent: 1em;
  font-style: italic;
  background-image: url(../images/bg/stripe.png);
} */

.main-text {
  font-size: 20px;
  line-height: 1.75;
}

.copyright-text {
  font-size: 14px;
  text-align: center;
}
HTML/CSS入門編 サンプルコード6-8
  • ブラウザプレビューすると、完成見本と同じスタイリングが適用されるはずです。
  • このように、同じタグであっても、異なるclass名をつけることにより、異なるスタイリングを行うことが可能になります。
  • class名は、同じ名前を複数のタグにつけてもOKです。
    • したがって、異なるタグでマークアップされた箇所に、同じスタイルを適用する目的で使用することも可能です。
Webサイト制作において、classセレクタはCSSコーディングのメインで使用するセレクタです。
■ 要素名をつけて記述する方法
classセレクタは、「.(ドット)」の前に要素名をつけて次のように記述することもできます。
p.main-text {
  font-size: 20px;
  line-height: 1.75;
}

p.copyright-text {
  font-size: 14px;
  text-align: center;
}
HTML/CSS入門編 サンプルコード6-9
この場合は、全てのp要素ではなく、class="main-text" やclass="copyright-text" が付いたp要素だけに適用されます。
例えば、
<h4 class="copyright-text"></h4>
HTML/CSS入門編 サンプルコード6-10
上記のh4要素に対して、以下のCSSのコードは適用されません。
p.copyright-text {
  font-size: 14px;
  text-align: center;
}
HTML/CSS入門編 サンプルコード6-11
HTML/CSS入門編 サンプルコード6-8のように、要素名を省略した場合は、どの要素につけられたclass名でもセレクタとして利用できます。

1つの要素に複数のclass名をつける方法

半角スペースで区切ることにより、1つの要素に複数のclass名をつけることができます。
以下の方法でHTMLタグに複数のclass名をつけたときのスタイリング例を見ていきましょう。
■ 複数のclass名の指定方法
<要素名 class="class名1 class名2 class名3・・・・"></要素名>
複数のclass名の指定方法
■ 1つの要素に複数のclass名をつける
<h2 class="vegetable-name tomato">トマト</h2>

<h2 class="vegetable-name green-pepper">ピーマン</h2>

<h2 class="vegetable-name eggplant">ナス</h2>
HTML/CSS入門編 サンプルコード6-12
  • HTML/CSS入門編 サンプルコード6-12は、3つのh2要素に共通の設定をするためのclass名としてvegetable-nameをつけ、個別の設定をするためのclass名としてtomato / green-pepper / eggplant というclass名をつけた例です。
  • このように複数classをつけることにより、次のようにCSSを効率的に記述することが可能です。
■ 共通のスタイルと個別のスタイルを分けて記述する
/*共通のスタイル*/
.vegetable-name {
  color: #ffffff;
  font-size: 24px;
  letter-spacing: 2px;
  text-indent: 0.5em;
}

/*個別のスタイル*/
.tomato {
  background-color: #dd0000; /*赤*/
}

.green-pepper {
  background-color: #00aa06; /*緑*/
}

.eggplant {
  background-color: #800097; /*紫*/
}
HTML/CSS入門編 サンプルコード6-13
  • 3つのh2要素に共通の設定(文字色、文字サイズ、字間、字下げ)は、共通の設定をするためにつけたclass名:vegetable-nameを使って記述し、h2ごとに異なる設定(背景色)は、異なる設定をするためにつけた個別のclass名:tomato / green-pepper / eggplantを使って記述しています。
  • 複数class名の書式を使うことにより、コードの無駄な重複を避け、必要最小限のCSSのコードで思い通りのスタイリングを実現することが可能です。
■サンプルコード6-12,13のブラウザプレビュー
 (15479)

※ このサンプルコードは演習ファイル中には記述されていませんので、自分で新しいファイルを作成して確認してください。
特定のclass名の組み合わせに対してCSSを設定する
例えば、vegetable-nameとtomatoの両方のclass名がついている要素だけにCSSを適用したいときは、以下のようにセレクタを記述します。
.vegetable-name.tomato {
  color: #fbff00; /*(文字色が黄色)*/
}
HTML/CSS入門編 サンプルコード6-14
■サンプルコード6-14のブラウザプレビュー
 (15486)

.vegetable-name.tomatoのように、同じタグにつけられた複数のclass名を連結することにより、「.vegetable-nameであり、かつ.tomatoでもある」という意味のセレクタを作成することもできます。

子孫セレクタ

子孫セレクタは大変便利なセレクタですが、これを使いこなせるようになるために、まずは親要素子要素子孫要素の概念を知る必要があります。
親要素と子要素、子孫要素とは?
  • HTMLタグは、ある要素の内側に別の要素を記述し、その要素のさらに内側にまた別の要素を記述するといったことが多い言語です。
  • そのようなタグの階層構造を表現するための記述法を入れ子といいます。ネスト(鳥の巣の意)ともいいます。
<ul>
  <li>
    <a href="index.html">HOME</a>
  </li>
</ul>
HTML/CSS入門編 サンプルコード6-15
ネストされたHTMLの例
  • 上記HTMLサンプルコード6-15のa要素から見て、1階層上のli要素は親要素です。
    • 反対にli要素から見れば、1階層下のa要素は子要素です。
  • ul要素から見れば、li要素は子要素です。
    • 反対にli要素から見れば、ul要素は親要素です。
  • また、ul要素から見て、子要素の子要素であるa要素は子孫要素と呼びます。
 (15496)

 (15497)

子孫セレクタの長所
子孫セレクタの長所を知っていただくために、classセレクタと比較しながら解説していきます。
■ classセレクタの場合
pasta-recipe.html中のulタグ(順序なしリスト)olタグ(番号つきリスト)でマークアップされた箇所を見てみましょう。
下はこのコード部分のブラウザプレビューです。まだCSSは適用されていません。
<h3>材料</h3>
  <ul>
    <li>にんにく・・・・・1片</li>
    <li>鷹の爪・・・・・1つ</li>
    <li>イタリアンパセリ・・・・・適量</li>
    <li>オリーブオイル・・・・・適量</li>
    <li>パスタ麺・・・・・80g</li>
  </ul>

  <h3>作り方</h3>
  <ol>
    <li>フライパンにオリーブオイルを大さじ2入れる。</li>
    <li>にんにくと鷹の爪を入れて弱火で加熱する。</li>
    <li>同時にパスタを茹ではじめる。</li>
    <li>にんにくの香りが立ってからイタリアンパセリを入れて茹で汁を加える。</li>
    <li>少し早めに上げたパスタをフライパンに入れる。</li>
    <li>ソースを絡めたら完成。</li>
  </ol>
HTML/CSS入門編 サンプルコード6-16
■ ブラウザプレビュー
 (15505)

  • ulタグとolタグは、ひとつひとつのリスト項目を同じliタグで作成します。
  • ul要素の子要素であるli要素のみに設定したいCSSがある場合、もしclassセレクタを使用するのであれば、次のように、ul要素の子要素であるすべてのli要素に同じclass名をつける必要があります。
<ul>
  <li class="list-item">にんにく・・・・・1片</li>
  <li class="list-item">鷹の爪・・・・・1つ</li>
  <li class="list-item">イタリアンパセリ・・・・・適量</li>
  <li class="list-item">オリーブオイル・・・・・適量</li>
  <li class="list-item">パスタ麺・・・・・80g</li>
</ul>
HTML/CSS入門編 サンプルコード6-17
これらのli要素にclassセレクタを使ってfont-sizeとline-heightを設定してみましょう。
.list-item {
  font-size: 20px;
  line-height: 2;
}
HTML/CSS入門編 サンプルコード6-18
■ ブラウザプレビュー
 (15513)

  • このclassセレクタを使用して特定の要素にCSSを適用する方法は、Web制作の現場のコーディング手法としてメインで使われている方法ですが、子孫セレクタを使うと、同じ設定を、より少ないコードで効率よく実現することができます。
  • 続いて、子孫セレクタを使い、ol要素の子要素であるli要素のみにCSSを設定してみましょう。
子孫セレクタの記述方法
子孫セレクタは、前述した親要素子要素子孫要素の関係から、特定の要素を絞り込んでいくために使用します。
<ol>
  <li>フライパンにオリーブオイルを大さじ2入れる。</li>
  <li>にんにくと鷹の爪を入れて弱火で加熱する。</li>
  <li>同時にパスタを茹ではじめる。</li>
  <li>にんにくの香りが立ってからイタリアンパセリを入れて茹で汁を加える。</li>
  <li>少し早めに上げたパスタをフライパンに入れる。</li>
  <li>ソースを絡めたら完成。</li>
</ol>
HTML/CSS入門編 サンプルコード6-19
  • olタグの子要素であるli要素という対象要素の絞り込みをしていきます。
  • 以下のように、親要素のセレクタの後ろに半角スペースを空けてから子要素のセレクタを記述して、タグの入れ子構造を表現します。
ol li {
  line-height: 1.8;
}
HTML/CSS入門編 サンプルコード6-20
また、以下のようにolタグとliタグにclass名をつけてから、
<ol class="howto-list">
  <li class="list-item2">フライパンにオリーブオイルを大さじ2入れる。</li>
  <li class="list-item2">にんにくと鷹の爪を入れて弱火で加熱する。</li>
  <li class="list-item2">同時にパスタを茹ではじめる。</li>
  <li class="list-item2">にんにくの香りが立ってからイタリアンパセリを入れて茹で汁を加える。</li>
  <li class="list-item2">少し早めに上げたパスタをフライパンに入れる。</li>
  <li class="list-item2">ソースを絡めたら完成。</li>
</ol>
HTML/CSS入門編 サンプルコード6-21
次のように、classセレクタを使って子孫セレクタを記述することも可能です。
.howto-list .list-item2 {
  line-height: 1.8;
}
HTML/CSS入門編 サンプルコード6-22
■ ブラウザプレビュー
 (16717)

子孫セレクタ使用上の注意点
  • 子孫セレクタを使うと、class属性の記述を減らすことができるため、HTMLのコードが複雑化しないで済む利点があります。
  • しかし、単独のclassセレクタよりも詳細度が上であるため、子孫セレクタを多用すると、適用されないclassセレクタが出てくるリスクがありますので、使用には十分な注意が必要です。
■ 適用されないclassセレクタの例
/* 詳細度が高い方が優先される */
.howto-list .list-item2 {
  color: blue;
}

/* こちらは効かない(上書きできない) */
.list-item2 {
  color: red;
}
HTML/CSS入門編 サンプルコード6-23
■ ブラウザプレビュー
 (16724)

【6-2】その他のCSSセレクタ

以下のセレクタの使用頻度は、上記の3種類に比べるとそれほど多くないですが、知っておくと役に立つものがありますので、必要なときに思い出せるようにしておきましょう。

idセレクタ

  • idセレクタは、HTML要素のid属性を指定してスタイルを適用するセレクタの記述方法です。
  • 設定手順はclassセレクタと似ていますが、同一ページ内で同じid名を複数の要素に使用することはできません。
idセレクタの設定手順
1. それぞれのタグにid属性で任意の名前(半角英数字と「-(ハイフン)」「_(アンダースコア)」が使える)をつける。
※ id属性でつけた任意の名前のことをid名と呼びます。
<h1 id="heading">みんなのパスタレシピ</h1>
HTML/CSS入門編 サンプルコード6-24
2. 次の書式でCSSセレクタを記述する。

 id名の先頭に「#(ハッシュ)」をつけたものがidセレクタです。

 ※ 元々h1要素に設定されていたCSSは削除するか、コメントアウトしておきます。
/* h1 {
  color: #ffffff;
  font-size: 45px;
  text-align: center;
  text-shadow: 2px 2px 10px #6c6c6c;
  font-family: sans-serif;
  letter-spacing: 0.1em;
  background-color: #ff0000;
} */

#heading {
  color: #ffffff;
  font-size: 45px;
  text-align: center;
  letter-spacing: 0.1em;
  background-color: #ff0000;
}
HTML/CSS入門編 サンプルコード6-25
■ ブラウザプレビュー
 (16737)

idセレクタ使用上の注意点
  • 同じHTML文書内の複数のタグに、同じid名をつけることはできません。
    • このルールがあるため、CSSを再利用できません。
■ 同一文書内で同じid名をつけることはNG
                
                    <h1 id="heading">みんなのパスタレシピ</h1> <!--これはNG!-->
                    <h2 id="heading">ペペロンチーノ</h2> <!--これはNG!-->
                
            
  • idセレクタは詳細度が非常に高く、他のセレクタで上書きができません。
    • Webサイトの公開後、新たなページの追加や、既存ページの修正を行う際に困難が生じます。
以上のことから、idセレクタをCSSコーディングに使用するのは非推奨とされています。
CSSコーディングにはclassセレクタをメインで使用しましょう。
id属性の主な役割
スタイリングでの使用が非推奨とされるid属性ですが、主に以下の役割で活用されます。
  • ページ内リンクの飛び先として
    4章で学んだように、ページ内リンクのジャンプ先の目印として使われます。
    例:<h2 id="section1">
  • JavaScriptで要素を特定する目印として
    特定の要素に動きをつけるなど、JavaScriptで操作する際の目印として使われます。
idは「ページに一つだけの特別な目印」として覚えましょう。

グループセレクタ

複数のセレクタに対して同じスタイルを適用する
  • グループセレクタは、複数のセレクタに対して同じスタイルを適用するための記述方法です。
  • 複数のセレクタを「,(カンマ)」で区切りながら指定します。
  • コードの重複を減らすことができるメリットがあります。
h1, h2, h3 {
  color:#ffffff;
}
HTML/CSS入門編 サンプルコード6-27
  • h1要素、h2要素、h3要素に対して一括でcolor:#ffffff;が適用されます。

子セレクタ

直接の子要素(1階層下の子要素)」のみにCSSを適用する
  • 子セレクタは、親要素と子要素の関係を使い、 「直接の子要素(1階層下の子要素)」 のみにCSSを適用するための記述方法です。
  • 子孫要素には適用されません。
.parent > p {
  color: red;
}
HTML/CSS入門編 サンプルコード6-28
<div class="parent">
  <p>このテキスト色は赤になる。</p>
  <div>
    <p>このテキストには適用されない。</p>
  </div>
</div>
HTML/CSS入門編 サンプルコード6-29

隣接セレクタ

すぐ下の兄弟要素のみにCSSを適用する
  • 隣接セレクタとは、すぐ下の兄弟要素のみにCSSを適用する記述方法です。
    • 同一階層にある要素(親要素が同じ要素)のことを兄弟要素といいます。
    • 下記HTMLサンプルコード6-31のh1要素とp要素は兄弟要素(同じdiv要素を親要素としている)です。
h1 + p {
  color: blue;
}
HTML/CSS入門編 サンプルコード6-30
  • h1の直後のp要素にのみcolor: blue;が適用され、それ以降の兄弟要素には適用されません。
<div>
  <h1>見出し</h1>
  <p>このテキストは青くなる。</p> <!-- ←このp要素のみにCSSが適用される -->
  <p>このテキストに青は適用されない。</p>
  <p>このテキストにも青は適用されない。</p>
</div>
HTML/CSS入門編 サンプルコード6-31

属性セレクタ

特定の属性・属性の値を持つ要素を指定する
  • 属性セレクタとは、特定の属性や属性の値があるかどうかを判別して、設定先の要素を指定することができるセレクタの一種です。
■ 特定の属性を持つ要素を指定する
a[href] {
    text-decoration: none;
}
HTML/CSS入門編 サンプルコード6-32
  • 適用対象は、href属性を持つすべてのa要素です。
■ 特定の属性の値を持つ要素を指定する
input[type="text"] {
  background-color: lightgray;
}
HTML/CSS入門編 サンプルコード6-33
  • 適用対象は、type="text"を持つすべてのinput要素です。
<input type="text"> <!-- 背景色がライトグレーになる -->
<input type="submit"> <!-- 背景色は適用されない -->
HTML/CSS入門編 サンプルコード6-34
■ 属性の値が指定した文字で始まる要素を指定する
 a[href^="https://"] {
  color: green;
}
HTML/CSS入門編 サンプルコード6-35
  • 適用対象は、外部リンク(絶対パス)が設定されたすべてのa要素です(相対パスによる内部リンクやアンカーリンクは含まない)
<a href="https://www.webcoach.jp/">WEBCOACH</a><!-- テキスト色が緑になる -->
<a href="index.html">HOME</a><!-- テキスト色に変化なし -->
HTML/CSS入門編 サンプルコード6-36

ユニバーサルセレクタ

  • ユニバーサルセレクタ「*」は、全称セレクタともいい、全てのHTML要素を指定するときに使います。
■ すべての要素の余白をリセットする(リセットCSS)
* {
  margin: 0;
  padding: 0;
}
HTML/CSS入門編 サンプルコード6-37
※ リセットCSSは入門編9章で解説します。

擬似クラス

  • 前章「HTML/CSS入門編 5章 CSSの基本を学ぼう」で学んだ擬似クラスはセレクタの一種です。
  • 次の種類があります。
■ 主な擬似クラス一覧
擬似クラス
意味
:link
未訪問のリンク
:visited
訪問済みのリンク
:hover
要素にマウスカーソルがのっているとき
:active
要素がクリックされた瞬間
:focus
フォームやリンクが選択状態のとき
:first-child
親要素内の最初の子要素
:last-child
親要素内の最後の子要素
:first-of-type
同じタグの中で最初の1つ
:last-of-type
同じタグの中で最後の1つ
:lang(値)
指定したlang属性の値を持つ要素
:not(セレクタ)
指定したセレクタに当てはまらない要素

擬似要素

  • 擬似要素とは、HTMLタグでマークアップされておらず、実際には要素が存在しない部分を擬似的に要素があるかのようにみなし、CSSを適用することができるセレクタの一種です。
  • よく使われるものには、以下の種類があります。
■ 主な擬似要素一覧
擬似要素
意味
::before
要素内の先頭に仮想的なコンテンツを追加する
::after
要素内の末尾に仮想的なコンテンツを追加する
::first-letter
要素の最初の1文字
::first-line
要素の最初の1行
※ 擬似要素は入門編14章で解説します。

【6-3】セレクタの詳細度と優先順位の関係を知ろう

CSSには、異なる複数のセレクタから、同じ要素に対して、同じプロパティによる異なる値のスタイリング指定がなされた場合、どのセレクタによる指定を優先して適用するかについてのルールがあります。
基本的には、後から記述されたもの(コードの記述順で下の方)が、前(記述順で上の方)に記述されたものを上書きするというルールですが、セレクタの詳細度によっても優先順が決まります。

セレクタの詳細度とは?

  • セレクタの詳細度とは、セレクタがどれだけ細かく指定されているかを示す度合いのことです。
  • このルールは少し複雑なため、例を挙げて説明します。
    • 例えば、次のような2つのCSSが記述されていたとします。
.container p {
  color: blue;
}

p {
  color: red;
}
HTML/CSS入門編 サンプルコード6-38
  • この場合、どちらもp要素に対してcolorプロパティが指定されていますが、color : blue; が適用されます。
  • なぜなら .container p の方がセレクタの詳細度が高いからです。
セレクタの詳細度については、セレクタの種類に応じたポイント制のような形がとられており、ブラウザ内部で優先順が計算・決定されます。
1つのページをコーディングする際に、要素セレクタ、classセレクタ、子孫セレクタ、idセレクタなどいろいろな種類のセレクタを混在させてCSSを記述していると、詳細度の管理が複雑になり、制作者が記述したCSSがまったく適用されないといったトラブルが発生することがあります。
そのようなトラブルを回避するために、セレクタ詳細度の基本法則を押さえておきましょう。
セレクタ詳細度の基本法則
  • 要素セレクタ < classセレクタ < idセレクタ の順で詳細度が高くなり、優先順が上がる。
  • 外部参照 < 内部参照 < インライン の順で詳細度は高くなり、優先順が上がる。
  • 子孫セレクタの場合は、より詳しく(深く)指定されている方が詳細度が上がる。
    • 以上が基本的な詳細度の法則ですが、コーディング時に気をつけていても、優先順位の設定ミスはどうしても起こってしまいます。
    • そのため、近年では詳細なclass名の命名ルールのもとに、classセレクタのみを使ってWebサイト全体をコーディングするBEM記法という手法が使われることが多くなっています。
    ※ BEM記法はHTML/CSS実践編で学習します。
    これで「HTML/CSS入門編 6章 よく使うセレクタを学ぼう」の解説を終わります。
    次の章に進みましょう。
    WEBCOACH | キャリアチェンジまでの全てを学ぶマンツーマンWEBスクール
    © 2020 by WEBCOACH