2025年7月28日月曜日

CSSの疑似クラスについて、具体的にわかりやすく説明してください。

 CSSの疑似クラスについてですね、初心者の方にも分かりやすくご説明します。


CSSの疑似クラスとは?

CSSの疑似クラスは、簡単に言うと**「特定の状態にある要素」や「要素の特定の部分」にスタイルを適用するための特殊なキーワード**です。

通常のCSSでは、HTMLのタグ名(pdivなど)やクラス名(.my-class)、ID名(#my-id)を使ってスタイルを適用しますよね。例えば、<p class="highlight">これは段落です。</p>というHTMLがあったら、.highlight { color: red; }のように指定します。

でも、「ユーザーがマウスを乗せた時だけ色を変えたい」とか、「リストの最初の項目だけ太字にしたい」といった、「状態」や「位置」によってスタイルを変えたい場合があります。こういう時に疑似クラスが活躍します。

疑似クラスは、コロン(:)で始まります。

基本的な書き方:

CSS
セレクタ:疑似クラス名 {
  プロパティ: 値;
}

具体例で見てみましょう!

いくつか代表的な疑似クラスを例に挙げて説明します。

1. :hover(ホバー)

これは一番よく使われる疑似クラスかもしれません。要素にマウスカーソルが乗った時に適用されます。

イメージ:

ウェブサイトのボタンにマウスを乗せると、色が変わったり、少し大きくなったりするのを見たことがありますか?あれは:hoverを使っていることが多いです。

コード例:

HTML
<button class="my-button">クリックしてね</button>
CSS
/* 通常のボタンのスタイル */
.my-button {
  background-color: #007bff;
  color: white;
  padding: 10px 20px;
  border: none;
  cursor: pointer; /* マウスカーソルをポインターにする */
}

/* マウスがボタンに乗った時のスタイル */
.my-button:hover {
  background-color: #0056b3; /* 色を少し濃くする */
  transform: translateY(-2px); /* 少し上に動かす */
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); /* 影をつける */
}

解説:

my-buttonクラスを持つ要素は通常青色ですが、マウスを乗せると少し濃い青色になり、わずかに上に動き、影がつくようになります。

2. :active(アクティブ)

これは要素がクリックされている(押されている)間に適用されます。

イメージ:

ボタンをカチッと押している瞬間に、一瞬だけ色が変わったり、へこんだように見えたりする効果に使われます。

コード例:

CSS
.my-button:active {
  background-color: #003d80; /* さらに濃い色にする */
  transform: translateY(0); /* 動かないようにする(へこんだように見せるため)*/
  box-shadow: none; /* 影をなくす */
}

解説:

my-buttonクラスを持つ要素がクリックされている間は、さらに濃い青色になり、へこんだような視覚効果が生まれます。

3. :focus(フォーカス)

これは入力フィールドやリンクなど、キーボードやTabキーでフォーカスが当たっている時に適用されます。

イメージ:

ウェブサイトのフォームで、入力欄をクリックすると、枠線が青くなったり、太くなったりするのを見たことがありませんか?あれは:focusを使っていることが多いです。

コード例:

HTML
<input type="text" class="my-input" placeholder="ここに入力してください">
CSS
.my-input {
  border: 1px solid #ccc;
  padding: 8px;
}

.my-input:focus {
  border-color: #007bff; /* 枠線を青くする */
  box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); /* 青い影をつける */
  outline: none; /* デフォルトのフォーカス時の枠線を消す */
}

解説:

my-inputクラスを持つ入力欄は通常灰色の枠線ですが、クリックして入力できる状態になると、枠線が青くなり、青い影がつくようになります。outline: none;は、ブラウザがデフォルトで表示するフォーカス時の枠線を消すためによく使われます。

4. :visited(訪問済み)

これはリンクが既に訪問されたことがある時に適用されます。

イメージ:

Googleなどで検索して、一度クリックして見たことがあるリンクは、色が変わっていますよね?あれは:visitedが使われています。

コード例:

HTML
<a href="https://www.example.com" class="my-link">サンプルサイトへ</a>
CSS
.my-link {
  color: #007bff; /* 通常のリンクの色 */
}

.my-link:visited {
  color: #6610f2; /* 訪問済みのリンクの色を紫にする */
}

解説:

my-linkクラスを持つリンクは通常青色ですが、一度クリックして訪問したことがある場合は紫色に変わります。

5. :nth-child()(N番目の子要素)

これは親要素の何番目かの特定の子要素にスタイルを適用します。()の中に数字やキーワードを入れます。

イメージ:

リストの項目で、一つおきに背景色を変えたり、最初の項目だけ目立たせたりするのに便利です。

コード例:

HTML
<ul>
  <li>リストアイテム 1</li>
  <li>リストアイテム 2</li>
  <li>リストアイテム 3</li>
  <li>リストアイテム 4</li>
</ul>
CSS
ul li {
  padding: 5px;
}

/* 偶数番目のリストアイテムの背景色を変える */
ul li:nth-child(even) {
  background-color: #f2f2f2;
}

/* 奇数番目のリストアイテムの背景色を変える */
ul li:nth-child(odd) {
  background-color: #e6e6e6;
}

/* 3番目のリストアイテムの文字を太くする */
ul li:nth-child(3) {
  font-weight: bold;
  color: red;
}

解説:

  • evenは偶数番目の子要素(2番目、4番目など)にスタイルを適用します。

  • oddは奇数番目の子要素(1番目、3番目など)にスタイルを適用します。

  • 数字(例: 3)を指定すると、その番号の子要素にスタイルを適用します。

6. :first-child(最初の要素) / :last-child(最後の要素)

これは親要素の最初の子要素、または最後の子要素にスタイルを適用します。

コード例:

CSS
ul li:first-child {
  border-top: 2px solid blue; /* 最初のリストアイテムの上線 */
}

ul li:last-child {
  border-bottom: 2px solid red; /* 最後のリストアイテムの下線 */
}

解説:

リストの最初の項目に青い上線、最後の項目に赤い下線を引くことができます。

疑似クラスのまとめ

  • 状態の変化に反応: :hover, :active, :focus などは、ユーザーの操作によって要素の状態が変わった時に使われます。

  • 構造的な位置関係: :first-child, :last-child, :nth-child(), :not() などは、HTMLの構造の中で要素がどの位置にあるかに基づいて使われます。

疑似クラスを使うメリット

  • インタラクティブなUIの作成: ユーザーのアクションに反応する、動的なウェブページが作れます。

  • コードの簡略化: JavaScriptを使わずに、CSSだけで状態に応じたスタイリングが可能です。

  • アクセシビリティの向上: フォーカス時のスタイルは、キーボード操作でウェブサイトを利用するユーザーにとって非常に重要です。

最後に

疑似クラスは、CSSをより強力で柔軟なものにするための非常に重要な機能です。最初は難しく感じるかもしれませんが、実際にコードを書いてみて、動きを確認しながら覚えるのが一番の近道です。

ここで紹介したのはほんの一部ですが、他にもたくさんの疑似クラスがあります。ぜひ色々と試してみてくださいね!

0 件のコメント:

コメントを投稿