CSS 疑似クラス
1. 疑似クラスとは
疑似クラス(Pseudo-class)は、要素の特定の状態(ステート)に対してスタイルを定義するために使用されます。
例えば、以下のようなケースで活用されます。
- ユーザーが要素の上にマウスを置いた(ホバーした)とき
- 訪問済みリンクと未訪問リンクでスタイルを分けるとき
- 要素がフォーカスされたとき
1.1 シンタックス
疑似クラスの構文は以下の通りです。
selector:pseudo-class {
property: value;
}2. アンカー疑似クラス (Anchor Pseudo-classes)
リンク(<a> タグ)の状態を表示するために、さまざまな疑似クラスが用意されています。
/* 未訪問のリンク */
a:link {
color: #FF0000;
}
/* 訪問済みのリンク */
a:visited {
color: #00FF00;
}
/* マウスホバー時 */
a:hover {
color: #FF00FF;
}
/* 選択中(クリックした瞬間)のリンク */
a:active {
color: #0000FF;
}重要: スタイルを定義する順番にはルールがあります。
:hoverは:linkと:visitedの後に定義する必要があります。:activeは:hoverの後に定義する必要があります。 つまり、link-visited-hover-activeの順序で記述するのが一般的です。
3. 疑似クラスと HTML クラス
疑似クラスは、HTML の class 属性と組み合わせて使用することも可能です。
特定のクラスを持つ要素の上にマウスを置いたときだけ、色を変えるといった指定ができます。
a.highlight:hover {
color: #ff0000;
}4. <div> での :hover 利用
:hover 疑似クラスは、リンク以外の要素(<div> など)にも適用できます。
div:hover {
background-color: blue;
}5. 簡易的なツールチップの表示
疑似クラスを活用して、マウスホバー時に隠れていた要素を表示させる「ツールチップ」のような挙動を実装できます。
p {
display: none;
background-color: yellow;
padding: 20px;
}
div:hover p {
display: block;
}6. :first-child 疑似クラス
:first-child 疑似クラスは、ある要素の最初の子要素である特定の要素にマッチします。
6.1 すべての <i> 要素のうち、最初の子要素を選択する
以下の例では、任意の要素内にある最初の <i> 要素を青色にします。
i:first-child {
color: blue;
}6.2 すべての <p> 要素内の最初の <i> 要素を選択する
p i:first-child {
color: blue;
}7. :lang 疑似クラス
:lang 疑似クラスを使用すると、特定の言語(lang 属性)が指定されている要素に対してスタイルを適用できます。
以下の例では、lang="no"(ノルウェー語)が指定された <q> 要素に対して引用符を定義しています。
<html>
<head>
<style>
q:lang(no) {
quotes: "~" "~";
}
</style>
</head>
<body>
<p>一部のテキスト <q lang="no">ノルウェー語の引用文</q> 一部のテキスト</p>
</body>
</html>8. 全ての CSS 疑似クラス
| セレクタ | 例 | 説明 |
|---|---|---|
:active | a:active | アクティブな(クリックされている)リンクを選択 |
:checked | input:checked | チェックされている input 要素を選択 |
:disabled | input:disabled | 無効化されている input 要素を選択 |
:empty | p:empty | 子要素を持たない p 要素を選択 |
:enabled | input:enabled | 有効な input 要素を選択 |
:first-child | p:first-child | 親要素の最初の子要素である p 要素を選択 |
:focus | input:focus | フォーカスされている input 要素を選択 |
:hover | a:hover | マウスホバーされているリンクを選択 |
:invalid | input:invalid | 値が不正な input 要素を選択 |
:lang(language) | p:lang(it) | lang 属性が "it" (イタリア語) で始まる p 要素を選択 |
:last-child | p:last-child | 親要素の最後の子要素である p 要素を選択 |
:not(selector) | :not(p) | p 要素ではない要素を選択 |
:nth-child(n) | p:nth-child(2) | 親要素の 2 番目の子要素である p 要素を選択 |
:root | :root | ドキュメントのルート要素を選択 |
:visited | a:visited | 訪問済みのすべてのリンクを選択 |