【CSS】セレクタの種類一覧と使い方を徹底解説_Webの基礎

【CSS】セレクタの種類一覧と使い方を徹底解説_Webの基礎

CSSセレクターとは、WebページのHTMLやXML文書内で、「どの要素に対してスタイル(デザインやレイアウトなど)を適用するか」を指定するためのパターンです。

目次

はじめに

CSSを書くうえで最も重要なのが「セレクタ」です。

セレクタを理解していれば、

  • 特定の要素だけデザインを変更
  • HTMLを効率的に装飾
  • 複雑なレイアウトにも対応

できるようになります。

この記事では、CSSでよく使うセレクタを基礎から応用まで、サンプルコード付きでわかりやすく解説します。

CSSセレクタとは?

CSSのセレクタとは「どのHTML要素にスタイルを適用するか指定する仕組み」です。

例えば次のコードを見てみましょう。

p {
    color: red;
}

このコードでつぎのような HTML の

<p>文字は赤色になります</p>

すべての <p> タグにスタイルが適用されます。

CSSセレクタの種類

1. 基本セレクタ (Basic Selectors)

Web制作のベースとなる、最も頻繁に使用するセレクタです。

セレクタ名記述例意味・適用対象
要素セレクタh2, div,
p, a
指定した**HTMLタグ(要素)**すべてを対象
クラスセレクタ.classNameclass="className" を持つすべての要素を対象
(複数箇所に適用可能)
IDセレクタ#idNameid="idName" を持つ特定の1つの要素を対象
(ページ内で重複不可)
ユニバーサルセレクタ*ページ内のすべての要素を対象
(全初期化などで使用)

要素セレクタ

HTMLタグ名を指定する最も基本的なセレクタです。

CSS
h2 {
    color: blue;
}
HTML
<h2>見出し</h2>
結果

全ての h2 見出しが青色になります。

クラスセレクタ

複数の要素に同じスタイルを適用できます。

HTML
<p class="important">重要な文章</p>
CSS
.important {
    color: red;
    font-weight: bold;
}
結果

重要な文章

クラスは何回でも使用できます。

IDセレクタ

特定の1つの要素を指定します。

HTML
<h1 id="main-title">ページタイトル</h1>
CSS
#main-title {
    color: green;
}
結果

ページタイトルの色が 青色 になります。

1ページ内で同じIDは基本的に1回だけ使用します。

ユニバーサルセレクタ(*)

すべての要素を対象にします。

* {
    margin: 0;
    padding: 0;
}

CSSリセットでよく利用されます。

2. 結合セレクタ (Combinators)

HTMLの親子関係や、兄弟関係(並び順)の位置関係を使って指定するセレクタです。

セレクタ名記述例意味・適用対象
子孫セレクタA B
(半角スペース区切り)
要素Aの構造内にあるすべての子孫要素B
(子、孫、それ以下すべて)を対象
子セレクタA > B要素Aの直下にある子要素Bのみを対象
(孫要素は含まない)
隣接兄弟セレクタA + B要素Aの直後に隣接している同じ階層の要素Bのみを対象
一般兄弟セレクタA ~ B要素Aの後ろにある同じ階層のすべての要素Bを対象
(隣接していなくても可)

子孫セレクタ(半角スペース)

特定要素の中にある要素を指定します。

HTML
<div class="box">
    <p>対象</p>
</div>
CSS
.box p {
    color: red;
}

子セレクタ(>)

直下の子要素のみ対象です。

.box > p {
    color: blue;
}

隣接セレクタ(+)

直後にある要素のみ対象です。

HTML
<h2>見出し</h2>
<p>説明文</p>
CSS
h2 + p {
    color: red;
}

兄弟セレクタ(~)

同じ親要素内の後続要素を指定します。

h2 ~ p {
    color: blue;
}

3. 属性セレクタ (Attribute Selectors)

HTMLタグ内の hreftypetarget などの「属性」の状態に合わせて指定するセレクタです。

セレクタ名記述例意味・適用対象
属性の有無[target]指定した属性を持っている要素を対象
(例では target 属性)
属性値の完全一致[type="text"]属性の値が完全に一致する要素を対象
先頭一致(前方一致)[href^="https://"]属性の値が指定した文字列から始まっている要素を対象
(外部リンクのアイコン付与などに便利)
後方一致[href$=".pdf"]属性の値が指定した文字列で終わっている要素を対象
(ファイルのアイコン分岐などに便利)
部分一致[class*="icon-"]属性の値のどこかに指定した文字列が含まれている要素を対象

属性セレクタ

特定の属性を持つ要素を指定できます。

属性が存在
input[type] {
    border: 1px solid red;
}
属性値が一致
input[type="text"] {
    background: #ffffcc;
}

4. 擬似クラス (Pseudo-classes)

要素の「特定の状態」や「記述された順番(構造)」を指定するセレクタです。

セレクタ名記述例意味・適用対象
ホバー状態a:hover要素にマウスポインターが乗っている時のスタイル
アクティブ状態button:active要素がクリック・画面タップされている間のスタイル
フォーカス状態input:focusその要素が選択(フォーカス)されている時のスタイル
最初の子要素li:first-child同じ親から見た、最初の要素を対象
最後の子要素li:last-child同じ親から見た、最後の要素を対象
n番目の子要素li:nth-child(n)親要素から見てn番目の子要素を対象
2nで偶数番目、oddで奇数番目など指定可)
否定(〜以外)div:not(.active)指定した条件を持たない要素を対象
(例では .active クラス)

擬似クラスとは?

擬似クラスは要素の状態によってスタイルを変更する仕組みです。

:hover

マウスポインタが要素(aタグ)に乗っているときの色変更です。

a:hover {
    color: red;
}

要素(ボタン)にマウスポインターが乗ったときのスタイルを変更します。

button:hover {
    background: blue;
    color: white;
}

:active

要素(ボタン)がクリック・画面タップ中のスタイルを変更します。

button:active {
    transform: scale(0.95);
}

:focus

入力欄を選択した時のスタイルを設定します。

input:focus {
    border-color: blue;
}

:checked

チェックボックス選択時のスタイルを設定します。

input:checked {
    accent-color: green;
}

:disabled

無効状態のときのスタイル設定です。

input:disabled {
    background: #eee;
}

:first-child

リストの最初の子要素のスタイルを設定します。

li:first-child {
    color: red;
}

:last-child

リスト最後の子要素にスタイルを設定します。

li:last-child {
    color: blue;
}

:nth-child()

リストの指定した順番(3番目)を対象にスタイルを設定します。

li:nth-child(3) {
    color: red;
}

tr は Table Row(テーブル・ロウ) の略です。テーブルの偶数行だけにスタイルを設定します。

tr:nth-child(even) {
    background: #f5f5f5;
}

次は、テーブルの奇数行だけにスタイルを設定します。

tr:nth-child(odd) {
    background: #fafafa;
}

:not()

条件から除外するときに使います。
次の例は、importantクラス以外を対象にスタイルを設定しています。

p:not(.important) {
    color: gray;
}

5. 擬似要素 (Pseudo-elements)

擬似クラスと似ていますが、要素の特定の部分を切り出したり、HTMLにない架空の要素をCSS側から追加するセレクタです。

セレクタ名記述例意味・適用対象
前方に挿入p::before要素のコンテンツの直前に疑似的な要素を生成
content:"" が必須)。
後方に挿入p::after要素のコンテンツの直後に疑似的な要素を生成
content:"" が必須)。
最初の1文字p::first-letterテキストブロックの最初の1文字目だけを対象
(ドロップキャップ等)
最初の1行p::first-lineテキストブロックの画面上レンダリングされる
最初の1行目だけを対象
選択部分::selectionユーザーがマウスなどでドラッグ反転選択した
テキスト部分を対象

::before

要素のコンテンツの直前に “★” を追加装飾します。

.notice::before {
    content: "★";
}

要素のコンテンツは「お知らせ」なら「★お知らせ」と表示されます。

::after

こちらは、要素のコンテンツの直後に “!” を追加装飾します。

.notice::after {
    content: "!";
}

要素のコンテンツは「お知らせ」なら「お知らせ!」と表示されます。

::first-letter

p 文字列要素の先頭文字だけ大きくします。

p::first-letter {
    font-size: 2em;
}

先頭文字のフォントサイズだけ 2em にして表示します。

擬似要素と疑似クラスの違い

よく混同されるので注意しましょう。

種類記号
擬似クラス::hover
擬似要素::::before

セレクタの優先順位(重要)

CSSが効かない原因の多くが優先順位の誤りによるものです。

優先順位は以下の順です。

!important
 ↓
IDセレクタ
 ↓
クラス・属性・擬似クラスセレクタ
 ↓
要素セレクタ

例:

p {
    color: blue;
}

.text {
    color: red;
}

この場合、要素セレクタpよりクラスセレクタ.textが優先されるため「赤」になります。

グループ化セレクタ

セレクターリストはセレクターのカンマ区切りのリストです。複数の要素に同じスタイルを適用します。

h1,
h2,
h3 {
    color: navy;
}

異なる基準で一致する要素に同じスタイルを適用するときは、セレクターをカンマ区切りのリストにまとめると、一貫性が得られると同時にスタイルシートの容量も削減できます。

セレクターリストを使用する欠点は、セレクターリスト内に未対応のセレクターが一つでもあった場合に、ルール全体が無効化されてしまうことです。

おわりに (まとめ)

まとめ

CSSセレクタは「どの要素を装飾するか」を決める重要な仕組みです。

まずは以下のセレクタと優先順位を覚えれましょう。

✅ 要素セレクタ
✅ クラスセレクタ
✅ IDセレクタ
✅ 子孫セレクタ
✅ 属性セレクタ
✅ :hover
✅ :focus
✅ :nth-child()

これらを理解しておくと、Webデザインをカスタマイズできるようになります。

次回は「CSSのフォント」について勉強します。

この記事が、少しでも誰かのお役に立てれば幸いです。

当サイトの記事で使用したVBAなどのサンプルをDLできます

この記事のサンプルはありません!

ダウンロードページへは下のカードをクリックすればジャンプできます。
よろしければご利用ください!

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

プロフィール画像は愛犬「くるみ」
ブログ名の「くるみこ」kurumico.comはここからつけました。
このブログをとおして、自分の経験から少しでも皆さまのお役に立てる情報が発信できればと思い立ち上げました。VBAは独学ですが、過去にはVBでフリーソフトを作っていた経験と仕事でExcelVBAを酷使している中での気づきなどを発信していきます。

目次