CSSの疑似クラスについてですね、初心者の方にも分かりやすくご説明します。
CSSの疑似クラスとは?
CSSの疑似クラスは、簡単に言うと**「特定の状態にある要素」や「要素の特定の部分」にスタイルを適用するための特殊なキーワード**です。
通常のCSSでは、HTMLのタグ名(p
、div
など)やクラス名(.my-class
)、ID名(#my-id
)を使ってスタイルを適用しますよね。例えば、<p class="highlight">これは段落です。</p>
というHTMLがあったら、.highlight { color: red; }
のように指定します。
でも、「ユーザーがマウスを乗せた時だけ色を変えたい」とか、「リストの最初の項目だけ太字にしたい」といった、「状態」や「位置」によってスタイルを変えたい場合があります。こういう時に疑似クラスが活躍します。
疑似クラスは、コロン(:
)で始まります。
基本的な書き方:
セレクタ:疑似クラス名 {
プロパティ: 値;
}
具体例で見てみましょう!
いくつか代表的な疑似クラスを例に挙げて説明します。
1. :hover
(ホバー)
これは一番よく使われる疑似クラスかもしれません。要素にマウスカーソルが乗った時に適用されます。
イメージ:
ウェブサイトのボタンにマウスを乗せると、色が変わったり、少し大きくなったりするのを見たことがありますか?あれは:hoverを使っていることが多いです。
コード例:
<button class="my-button">クリックしてね</button>
/* 通常のボタンのスタイル */
.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
(アクティブ)
これは要素がクリックされている(押されている)間に適用されます。
イメージ:
ボタンをカチッと押している瞬間に、一瞬だけ色が変わったり、へこんだように見えたりする効果に使われます。
コード例:
.my-button:active {
background-color: #003d80; /* さらに濃い色にする */
transform: translateY(0); /* 動かないようにする(へこんだように見せるため)*/
box-shadow: none; /* 影をなくす */
}
解説:
my-buttonクラスを持つ要素がクリックされている間は、さらに濃い青色になり、へこんだような視覚効果が生まれます。
3. :focus
(フォーカス)
これは入力フィールドやリンクなど、キーボードやTabキーでフォーカスが当たっている時に適用されます。
イメージ:
ウェブサイトのフォームで、入力欄をクリックすると、枠線が青くなったり、太くなったりするのを見たことがありませんか?あれは:focusを使っていることが多いです。
コード例:
<input type="text" class="my-input" placeholder="ここに入力してください">
.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が使われています。
コード例:
<a href="https://www.example.com" class="my-link">サンプルサイトへ</a>
.my-link {
color: #007bff; /* 通常のリンクの色 */
}
.my-link:visited {
color: #6610f2; /* 訪問済みのリンクの色を紫にする */
}
解説:
my-linkクラスを持つリンクは通常青色ですが、一度クリックして訪問したことがある場合は紫色に変わります。
5. :nth-child()
(N番目の子要素)
これは親要素の何番目かの特定の子要素にスタイルを適用します。()の中に数字やキーワードを入れます。
イメージ:
リストの項目で、一つおきに背景色を変えたり、最初の項目だけ目立たせたりするのに便利です。
コード例:
<ul>
<li>リストアイテム 1</li>
<li>リストアイテム 2</li>
<li>リストアイテム 3</li>
<li>リストアイテム 4</li>
</ul>
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
(最後の要素)
これは親要素の最初の子要素、または最後の子要素にスタイルを適用します。
コード例:
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 件のコメント:
コメントを投稿