CSS 疑似クラス

疑似クラスは要素の特別な状態を定義するために使用されます。

たとえば、以下のような場合に使用できます:

  • ユーザーがマウスオーバーしたときに要素のスタイルを設定する
  • 訪問済みと未訪問のリンクを異なるスタイルで設定する
  • 要素がフォーカスを受け取ったときにスタイルを設定する
selector:pseudo-class {
  property: value;
}

アンカー疑似クラス

リンクは異なる方法で表示できます:

/* 訪問していないリンク */
a:link {
  color: #FF0000;
}

/* 訪問済みのリンク */
a:visited {
  color: #00FF00;
}

/* マウスオーバーしたリンク */
a:hover {
  color: #FF00FF;
}

/* 選択されたリンク */
a:active {
  color: #0000FF;
}

注意:効果を発揮するためには、a:hoverはa:linkとa:visitedの後に配置する必要があります。a:activeはa:hoverの後に配置する必要があります。疑似クラスの名前は大文字小文字を区別しません。

疑似クラスとHTMLクラスの組み合わせ:

/* 例のリンクにマウスオーバーすると色が変わります */
a.highlight:hover {
  color: #ff0000;
}

ホバー効果

<div> 要素に対して :hover 疑似クラスを使用する例:

div:hover {
  background-color: blue;
}

シンプルなツールチップのホバー

<div> 要素にカーソルを合わせると <p> 要素が表示される例(ツールチップのように):

p {
  display: none;
  background-color: yellow;
  padding: 20px;
}

div:hover p {
  display: block;
}

:first-child 疑似クラス

:first-child 疑似クラスは、指定された要素が他の要素の最初の子要素である場合にマッチします。

/* 最初の 

要素にマッチ */ p:first-child { color: blue; } /* すべての

要素内の最初の 要素にマッチ */ p i:first-child { color: blue; } /* 他の要素の最初の

要素内のすべての 要素にマッチ */ p:first-child i { color: blue; }

:lang 疑似クラス

:lang 疑似クラスは、異なる言語に対して特別なルールを定義することができます。

<html>
<head>
<style>
q:lang(no) {
  quotes: "~" "~";
}
</style>
</head>
<body>

<p>Some text <q lang="no">A quote in a paragraph</q> Some text.</p>

</body>
</html>

さらに多くの例:

ハイパーリンクに異なるスタイルを追加する方法を示す例です。

:focus 疑似クラスの使用方法を示す例です。

疑似クラス例の説明
:activea:activeアクティブなリンクを選択します
:checkedinput:checkedすべてのチェック済みの 要素を選択します
:disabledinput:disabledすべての無効な 要素を選択します
:emptyp:empty子を持たないすべての

要素を選択します

:enabledinput:enabledすべての有効な 要素を選択します
:first-childp:first-child親の最初の子であるすべての

要素を選択します

:first-of-typep:first-of-type親の最初の

要素であるすべての

要素を選択します

:focusinput:focusフォーカスを受け取った 要素を選択します
:hovera:hoverマウスオーバー時のリンクを選択します
:in-rangeinput:in-range指定された範囲内の値を持つ 要素を選択します
:invalidinput:invalid無効な値を持つすべての 要素を選択します
:lang(language)p:lang(it)lang属性値が「it」で始まるすべての

要素を選択します

:last-childp:last-child親の最後の子であるすべての

要素を選択します

:last-of-typep:last-of-type親の最後の

要素であるすべての

要素を選択します

:linka:linkすべての訪問していないリンクを選択します
:not(selector):not(p)

要素でないすべての要素を選択します

:nth-child(n)p:nth-child(2)親の2番目の子であるすべての

要素を選択します

:nth-last-child(n)p:nth-last-child(2)親の最後から2番目の子であるすべての

要素を選択します

:nth-last-of-type(n)p:nth-last-of-type(2)親の最後から2番目の

要素であるすべての

要素を選択します

:nth-of-type(n)p:nth-of-type(2)親の2番目の

要素であるすべての

要素を選択します

:only-of-typep:only-of-type親の唯一の

要素であるすべての

要素を選択します

:only-childp:only-child親の唯一の子であるすべての

要素を選択します

:optionalinput:optional“required”属性を持たない 要素を選択します
:out-of-rangeinput:out-of-range指定された範囲外の値を持つ 要素を選択します
:read-onlyinput:read-only“readonly”属性が指定されている 要素を選択します
:read-writeinput:read-write“readonly”属性が指定されていない 要素を選択します
:requiredinput:required“required”属性が指定されている 要素を選択します
:rootrootドキュメントのルート要素を選択します
:target#news:target現在アクティブな #news 要素を選択します(そのアンカー名を含むURLがクリックされた場合)
:validinput:valid有効な値を持つすべての 要素を選択します
:visiteda:visitedすべての訪問済みリンクを選択します