CSS

疑似クラス

初級

読み方:ぎじクラス|英語:Pseudo Class

要素の状態に応じてスタイルを変える仕組みだよ。例::hover(マウスを乗せたとき)。

やさしい説明

疑似クラスとは、要素の「状態」や「位置」に応じてスタイルを適用するセレクタです。コロン(:)で始まります。

「マウスを乗せたとき色が変わるボタン」を見たことがありますよね。あれは :hover という疑似クラスで実現しています。

状態系(:hover, :focus, :active)と位置系(:first-child, :nth-child)の2種類があります。HTMLを変えずにCSSだけで動的な見た目を作れます。

具体例・使い方

/* マウスを乗せたとき */
.btn:hover { background: #0d9488; color: white; }

/* 入力欄にフォーカスしたとき */
input:focus { border-color: blue; outline: none; }

/* リストの最初の項目だけ */
li:first-child { font-weight: bold; }

/* 偶数番目の行に背景色 */
tr:nth-child(even) { background: #f9f9f9; }

よく使う疑似クラス一覧

疑似クラス いつ適用される? よく使う場面
:hoverマウスを乗せたときボタンの色変化
:focus入力欄を選択中フォームの枠線強調
:activeクリックした瞬間押した感の演出
:first-child最初の子要素先頭だけ特別扱い
:nth-child(even)偶数番目表の縞模様
:disabled無効化された入力押せないボタンをグレーに

いつ使う?

  • ボタンのホバーエフェクト(:hover
  • 入力欄のフォーカス時の枠線(:focus
  • テーブルの縞模様(:nth-child(even)
  • リストの最初/最後だけ特別なスタイル(:first-child / :last-child

スマホにはマウスが無いので :hover は効きにくいです。タップで反応させたいときは :active や JavaScript を併用しましょう。ホバーだけに頼った設計はスマホで「反応しない」と感じられがちです。

間違いやすいポイント

❌ 疑似クラスと疑似要素を混同する

疑似クラスはコロン1つ(:hover=状態)、疑似要素はコロン2つ(::before=仮想的な要素を作る)。コロンの数で見分けられます。

:nth-child の数え方は1から

配列のインデックスは0からですが、:nth-child1から数えます。:nth-child(1) が最初の要素です。0始まりと混同しないよう注意。

よくある疑問

Q: 疑似クラスと疑似要素の違いは?

A: 疑似クラスは「状態」(:hover, :focus, :first-child等)、疑似要素は「仮想的な要素」(::before, ::after等)を指します。コロンの数も違います。

Q: よく使う疑似クラスは?

A: :hover(マウスオーバー)、:focus(フォーカス時)、:first-child(最初の子)、:last-child(最後の子)、:nth-child()(n番目の子)が頻出です。

Q: :hoverがスマホで効かないのはなぜ?

A: スマホにはマウスカーソルがないため:hoverが正しく動きません。@media (hover: hover) { } の中に書くか、タッチデバイスでは:activeを使いましょう。

関連用語

  • セレクタ — 疑似クラスはセレクタの一種(状態で選ぶ)
  • 詳細度 — 疑似クラスはクラスと同じ強さを持つ
  • プロパティ — 状態に合わせて変える「見た目の設定」

📖 関連レッスン

レッスンを見る →

関連ブログ記事

⚠️ 関連するエラー

❓ 関連するQ&A