6日でできる 新HTML&CSS入門|さまざまなCSSセレクタ

CSSセレクタを使い分ければ、デザインはもっと狙いどおりになる。
id、class、子孫セレクタ、複数セレクタを覚えて、必要な場所だけにスタイルを届けよう。

CSSを書くときに大切なのは、どのような見た目にするかだけではありません。もうひとつ、とても大切なことがあります。それは、どのHTML要素にCSSを適用するかを正しく選ぶことです。

たとえば、すべての段落の文字色を変えたい場合は、pを指定すれば済みます。しかし、ページの中には「この見出しだけ大きくしたい」「注意書きの文章だけ色を変えたい」「記事の中にある画像だけ枠線を付けたい」といった場面がたくさんあります。

このようなときに使うのがCSSセレクタです。セレクタは、CSSを適用する対象を選ぶための指定です。HTMLのタグ名で選ぶ方法だけでなく、idで1つの要素を選んだり、classで複数の要素をまとめて選んだり、特定の範囲の中にある要素だけを選んだりできます。

Web制作では、セレクタをうまく使えるようになると、HTMLの構造を保ったまま、CSSだけで見た目を細かく調整しやすくなります。この記事では、idセレクタ、classセレクタ、子孫セレクタ、複数セレクタを中心に、使い方と考え方をやわらかく整理していきます。

CSSセレクタは「どこに効かせるか」を決める指定

CSSでは、まずセレクタを書き、そのあとに波かっこの中でデザインの指定を書きます。

セレクタ {
  プロパティ: 値;
}

たとえば、すべての段落の文字色を青にしたい場合は、次のように書きます。

p {
  color: blue;
}

この場合、pがセレクタです。つまり、HTML内のすべての<p>に対して、color: blue;が適用されます。

ただし、実際のWebページでは、すべての<p>を同じ見た目にしたいとは限りません。通常の本文、注釈、重要な説明、補足情報など、段落にもいろいろな役割があります。

そこで、idやclassを使って、特定の要素だけを選べるようにします。

図1:CSSセレクタはスタイルを届ける宛先を選ぶ

この図から分かること

CSSセレクタは、スタイルを適用する相手を選ぶための指定です。タグ名で広く選ぶこともできれば、idやclassを使って特定の場所だけを選ぶこともできます。セレクタを使い分けることで、ページ全体のデザインを細かく調整しやすくなります。

idセレクタはページ内の特別な1つを選ぶ

idは、HTML要素に付ける識別名です。ページの中で特別に扱いたい要素にidを付けると、CSSからその要素を指定できます。

たとえば、メインタイトルだけに下線を付けたい場合は、HTMLでidを指定し、CSSでは#を使って選びます。

<h1 id="main-title">はじめてのCSSセレクタ</h1>

#main-title {
  text-decoration: underline;
}

CSSでは、id名の前に#を付けます。上の例では、id="main-title"が付いた要素にだけ、text-decoration: underline;が適用されます。

idの大きな特徴は、同じHTML文書の中で同じid名を重複させないことです。つまり、idはページ内で1つだけの要素を示す名前として使います。

項目内容
書き方#id名
HTML側の指定id="名前"
主な用途ページ内で1つだけの特別な要素を選ぶ
注意点同じページ内で同じid名を重複させない

idは、ページの中で特に重要な見出し、特定の領域、JavaScriptで操作したい要素などに使われることがあります。ただし、CSSの再利用性を考えると、複数の要素に同じスタイルを当てたい場合はclassのほうが向いています。

classセレクタは同じデザインを複数の要素に使える

classは、複数の要素に同じ目印を付けたいときに使います。たとえば、注釈の文章がページ内に何度も出てくる場合、すべてに同じclassを付けておくと、CSSでまとめて装飾できます。

<p class="memo">入力内容はあとから変更できます。</p>
<p class="memo">保存前に内容を確認してください。</p>

.memo {
  color: #666;
  font-style: italic;
}

CSSでは、class名の前に.を付けます。上の例では、class="memo"が付いたすべての要素に、グレーの文字色と斜体が適用されます。

classの便利なところは、同じclass名を複数の要素に使えることです。同じデザインを何度も使いたいときに向いています。

項目内容
書き方.class名
HTML側の指定class="名前"
主な用途複数の要素に同じスタイルを適用する
特徴再利用しやすい
よく使う場面注意文、ボタン、カード、ラベル、注釈など

idは1つだけの特別な要素に使い、classは何度も使う共通デザインに使う、と考えると分かりやすいです。

idとclassを使った実践サンプル

ここでは、ページのタイトルにはidを使い、複数の説明文にはclassを使う例を見てみます。タイトルはページ内で1つだけなのでid、補足文は複数出てくるのでclassを使います。

ファイル名: lesson26_1.html

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>idとclassの使い分け</title>
<style>
  #page-title {
    color: #0066cc;
    font-size: 220%;
    border-bottom: 3px solid #0066cc;
  }

  .lead-text {
    color: #777;
    font-style: italic;
  }
</style>
</head>
<body>
  <h1 id="page-title">CSSセレクタの練習ページ</h1>

  <p class="lead-text">このページでは、idとclassの違いを確認します。</p>

  <p>ここは通常の本文です。特別なclassは付いていません。</p>

  <p class="lead-text">同じclassを付けると、同じ見た目を再利用できます。</p>
</body>
</html>

ブラウザの表示例

id="page-title"が付いた<h1>だけが、青色で大きく表示され、下線のような枠線が付きます。

class="lead-text"が付いた2つの<p>は、グレーの斜体になります。一方で、classが付いていない通常の<p>には、このスタイルは適用されません。

この例から、idとclassの使い分けが見えてきます。ページ内で1つだけのタイトルにはidを使い、複数の場所で使いたい説明文にはclassを使っています。

idとclassの使い分け

idとclassは、どちらもHTML要素に名前を付けてCSSから選ぶために使います。ただし、使う目的が少し違います。

比較項目idclass
CSSでの書き方#page-title.lead-text
HTMLでの書き方id="page-title"class="lead-text"
同じ名前の使用同じページ内では基本的に1回複数回使える
向いている用途ページ内で特別な1つの要素共通デザインを使う複数の要素
メインタイトル、特定のエリア注釈、ボタン、カード、ラベル

CSSの学習を始めたばかりのうちは、idとclassの違いが少し分かりにくいかもしれません。その場合は、まず次のように考えると扱いやすいです。

ページ内で1つだけの特別なものにはidを使います。
何度も使い回したい見た目にはclassを使います。

特にWeb制作では、classを使う場面がとても多いです。デザインを部品のように再利用できるため、あとから修正しやすいCSSを書きやすくなります。

図2:idは1つ、classは複数に使える

この図から分かること

idは、ページの中で1つだけの要素を識別するときに向いています。一方、classは同じスタイルを複数の要素に使いたいときに便利です。どちらもCSSの適用先を選ぶために使いますが、役割を分けて使うことで、HTMLとCSSが整理しやすくなります。

子孫セレクタは「特定の範囲の中だけ」を選べる

子孫セレクタは、ある要素の中にある別の要素を選ぶためのセレクタです。セレクタとセレクタの間に半角スペースを入れて書きます。

たとえば、articleの中にあるimgだけに枠線を付けたい場合は、次のように書きます。

article img {
  border: 3px solid #e60000;
}

この指定は、articleの中にあるimgにだけ適用されます。ページ内に他のimgがあっても、それがarticleの外にある場合は対象になりません。

子孫セレクタの考え方は、「左側の要素の中にある右側の要素を選ぶ」です。

セレクタ意味
article imgarticleの中にあるすべてのimg
nav anavの中にあるすべてのa
section psectionの中にあるすべてのp
.news-list liclass="news-list"の中にあるすべてのli

子孫セレクタを使うと、ページ全体ではなく、特定の領域の中だけにスタイルを適用できます。たとえば、通常の画像には枠線を付けず、記事本文の画像だけに枠線を付ける、といった指定ができます。

複数セレクタは同じCSSをまとめて指定できる

複数の要素に同じCSSを指定したいときは、複数セレクタを使います。セレクタをカンマで区切って並べると、複数の対象に同じスタイルを適用できます。

h2,
h3,
footer {
  margin-top: 1.5em;
}

この指定では、h2、h3、footerのすべてにmargin-top: 1.5em;が適用されます。

もし複数セレクタを使わない場合、次のように同じ指定を何度も書くことになります。

h2 {
  margin-top: 1.5em;
}

h3 {
  margin-top: 1.5em;
}

footer {
  margin-top: 1.5em;
}

同じ内容を何度も書くと、修正するときに手間が増えます。たとえば、余白を1.5emから2emに変更したい場合、複数箇所を直さなければなりません。

複数セレクタを使えば、共通の指定を1か所にまとめられます。CSSをすっきり書けるだけでなく、修正漏れも防ぎやすくなります。

子孫セレクタと複数セレクタを使った実践サンプル

次の例では、articleの中にある画像だけに赤い点線の枠を付けます。また、h2、h3、footerに同じ上余白をまとめて指定します。

ファイル名: lesson26_2.html

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>子孫セレクタと複数セレクタ</title>
<style>
  article img {
    border: 3px dotted #e60000;
  }

  h2,
  h3,
  footer {
    margin-top: 1.5em;
  }

  img {
    width: 200px;
    height: auto;
  }
</style>
</head>
<body>
  <h2>お知らせ</h2>
  <p>このページでは、セレクタの適用範囲を確認します。</p>

  <article>
    <h3>制作レポート</h3>
    <img src="https://picsum.photos/200/130" alt="制作風景のサンプル画像">
    <p>この記事内の画像には、子孫セレクタによって枠線が付きます。</p>
  </article>

  <img src="https://picsum.photos/200/130?image=20" alt="記事外のサンプル画像">

  <footer>© 2026 CSS Sample Site</footer>
</body>
</html>

ブラウザの表示例

articleの中にある画像には、赤い点線の枠線が付きます。一方で、articleの外にある画像には、同じ枠線は付きません。

これは、article imgという子孫セレクタが、articleの中にあるimgだけを選んでいるためです。

また、h2、h3、footerには、同じ上余白が付きます。これは、h2, h3, footerという複数セレクタで、共通のCSSをまとめて指定しているためです。

子孫セレクタの半角スペースに注意する

子孫セレクタでは、セレクタ同士の間に半角スペースを入れます。この半角スペースには、「その中にある」という意味があります。

article img {
  border: 3px dotted #e60000;
}

これは、articleの中にあるimgを選ぶという意味です。

一方で、次のようにスペースの意味を理解せずに書くと、思ったようにCSSが効かないことがあります。

articleimg {
  border: 3px dotted #e60000;
}

このように続けて書いてしまうと、articleimgというタグを選ぼうとしている形になります。通常、そのようなタグは存在しないため、CSSは適用されません。

CSSセレクタでは、記号やスペースにも意味があります。特に子孫セレクタでは、半角スペースを忘れないようにしましょう。

複数セレクタのカンマに注意する

複数セレクタでは、対象をカンマで区切ります。

h2,
h3,
footer {
  margin-top: 1.5em;
}

この指定は、h2とh3とfooterのすべてを選びます。

カンマを忘れて次のように書くと、意味が変わります。

h2 h3 footer {
  margin-top: 1.5em;
}

この場合は、h2の中にあるh3の中にあるfooterを選ぶ、というかなり限定的な指定になります。通常のHTML構造では、そのような形になっていないことが多いため、CSSが効かない原因になります。

カンマは「これも、これも、これも選ぶ」という意味です。半角スペースは「その中にあるものを選ぶ」という意味です。この違いを覚えておくと、セレクタのミスを減らせます。

図3:半角スペースとカンマでは意味が変わる

この図から分かること

CSSセレクタでは、半角スペースとカンマで意味が大きく変わります。半角スペースは、特定の要素の中にある要素を選ぶときに使います。カンマは、複数の要素をまとめて選ぶときに使います。この違いを理解すると、CSSがどこに効くのかを予測しやすくなります。

主なCSSセレクタの一覧

ここまでに見てきたセレクタを整理すると、次のようになります。

カテゴリ記号書き方の例適用される範囲
idセレクタ##logo指定したidを持つ1つの要素
classセレクタ..alert指定したclassを持つ複数の要素
タイプセレクタなしnav指定したタグ名の要素
子孫セレクタ半角スペースul li左側の要素の中にある右側の要素
複数セレクタ,h1, h2カンマで列挙したすべての要素

タイプセレクタは、タグ名で要素を選ぶ基本的なセレクタです。たとえば、pと書けばすべての<p>、h1と書けばすべての<h1>が対象になります。

idセレクタとclassセレクタは、HTML側にid属性やclass属性を付けて使います。特定の要素を選びたいときはid、複数の要素に同じスタイルを使いたいときはclassが便利です。

子孫セレクタは、HTMLの構造を利用して対象を絞り込む方法です。特定の領域の中にある要素だけを装飾したいときに役立ちます。

複数セレクタは、同じCSSをいくつかの要素にまとめて適用したいときに使います。同じ指定を何度も書かずに済むため、CSSを整理しやすくなります。

セレクタを組み合わせると細かい指定ができる

CSSセレクタは、単独で使うだけでなく、組み合わせて使うこともできます。

たとえば、class="news"が付いた領域の中にある<p>だけを選びたい場合は、次のように書けます。

.news p {
  line-height: 1.8;
}

これは、class="news"の中にある<p>だけに行間を指定する書き方です。ページ全体の<p>には影響しません。

また、複数のclassに同じスタイルを当てたい場合は、カンマでまとめることができます。

.info,
.warning,
.success {
  padding: 12px;
}

このように、セレクタを組み合わせると、必要な場所だけにCSSを効かせられます。CSSの量を増やしすぎず、分かりやすく管理するためにも、セレクタの使い分けはとても大切です。

CSSセレクタを学ぶときの考え方

CSSセレクタを学ぶときは、最初からすべてを暗記しようとしなくても大丈夫です。まずは、次の流れで考えると理解しやすくなります。

目的使いやすいセレクタ
すべての同じタグにCSSを当てたいタイプセレクタ
ページ内で1つだけの要素にCSSを当てたいidセレクタ
複数の要素に同じCSSを当てたいclassセレクタ
特定の範囲内にある要素だけ選びたい子孫セレクタ
複数の要素に同じ指定をまとめたい複数セレクタ

たとえば、ページ全体の段落を整えたいならpを使います。注意文だけ色を変えたいならclassを使います。ページ内のメインタイトルだけ特別にしたいならidを使います。記事の中の画像だけ装飾したいなら子孫セレクタを使います。

このように、「どこにCSSを効かせたいのか」を先に考えると、どのセレクタを使えばよいのか判断しやすくなります。

CSSは、見た目を指定する言語であると同時に、対象を選ぶ力が大切な言語です。セレクタを使い分けられるようになると、HTMLを必要以上に書き換えなくても、CSSだけでページの印象や読みやすさを細かく調整できるようになります。

必要でしたら、同じ文調で「擬似クラスセレクタ」「属性セレクタ」「子セレクタ」「隣接セレクタ」まで続けて解説できます。