CSS
 Computer >> コンピューター >  >> プログラミング >> CSS

CSS疑似クラスとは?基本構文から全31種類の一覧と実例まで徹底解説

CSSの疑似クラス(Pseudo Class)を使うと、HTMLの既存要素に対して、特定の状態に応じたスタイルを適用できます。たとえば「:hover(マウスオーバー時)」「:visited(訪問済みリンク)」「:disabled(無効化された要素)」などが代表的な例です。これにより、JavaScriptを使わずに動的な表現を実現できます。

注意: CSS3では、疑似クラスと疑似要素を区別するため、疑似クラスは単一コロン(:)の記法を使用します。

構文

CSS疑似クラスを使用する際の基本的な構文は以下の通りです。

Selector:pseudo-class {
    css-property: /*値*/;
}

主なCSS疑似クラス一覧

利用できるCSS疑似クラスは以下の通りです。

No.疑似クラスと説明
1:active
クリック中など、アクティブな状態の要素を選択します
2:checked
チェックされている要素(チェックボックスやラジオボタンなど)を選択します
3:disabled
無効化されているすべての要素を選択します
4:empty
子要素を一切持たない要素を選択します
5:enabled
有効化されているすべての要素を選択します
6:first-child
親要素の最初の子である要素を選択します
7:first-of-type
親要素内で最初に出現する、その種類の要素を選択します
8:focus
フォーカスが当たっている要素を選択します
9:hover
マウスカーソルが重なった状態の要素を選択します
10:in-range
指定された範囲内の値を持つ要素を選択します
11:invalid
無効な値を持つすべての要素を選択します
12:lang(言語)
lang属性の値が指定した言語で始まるすべての要素を選択します
13:last-child
親要素の最後の子である要素を選択します
14:last-of-type
親要素内で最後に出現する、その種類の要素を選択します
15:link
未訪問のリンク要素をすべて選択します
16:not(selector)
指定したセレクターに該当しないすべての要素を選択します
17:nth-child(n)
親要素のn番目の子である要素を選択します
18:nth-last-child(n)
最後の子から数えてn番目の子である要素を選択します
19:nth-last-of-type(n)
最後の子から数えてn番目に出現する、その種類の要素を選択します
20:nth-of-type(n)
親要素内でn番目に出現する、その種類の要素を選択します
21:only-of-type
親要素内で唯一存在する、その種類の要素を選択します
22:only-child
親要素の唯一の子である要素を選択します
23:optional
required属性を持たない要素を選択します
24:out-of-range
指定された範囲外の値を持つ要素を選択します
25:read-only
readonly属性が指定された要素を選択します
26:read-write
readonly属性を持たない(編集可能な)要素を選択します
27:required
required属性が指定された要素を選択します
28:root
ドキュメントのルート要素(html要素など)を選択します
29:target
現在アクティブな要素(アンカー名を含むURLでクリックされた対象)を選択します
30:valid
有効な値を持つすべての要素を選択します
31:visited
訪問済みのリンク要素をすべて選択します

サンプルコード①:アンカーへの疑似クラス適用

まずは、リンク要素に対して複数の疑似クラスを組み合わせて使う例を見てみましょう。

<!DOCTYPE html>
<html>
<head>
<title>CSS Anchor Pseudo Classes</title>
</head>
<style>
div {
    color: #000;
    padding:20px;
    background-image: linear-gradient(135deg, grey 0%, white 100%);
    text-align: center;
}
.anchor {
    color: #FF8A00;
}
.anchor:last-child {
    color: #03A9F4;
}
.anchor:visited {
    color: #FEDC11;
}
.anchor:hover {
    color: #C303C3;
}
.anchor:active {
    color: #4CAF50;
}
</style>
<body>
<div>
<h1>Search Engines</h1>
<a class="anchor" href="https://www.google.com" target="_blank">Go To Google</a>
<a class="anchor" href="https://www.bing.com" target="_blank">Go To Bing</a>
</div>
</body>
</html>

出力結果

このコードを実行すると、次のような表示になります。

CSS疑似クラスとは?基本構文から全31種類の一覧と実例まで徹底解説

この例では、:visitedで訪問済みリンクの色を変え、:hoverでマウスオーバー時の色を変え、:activeでクリック中の色を変えることで、リンクの状態に応じた視覚的なフィードバックを実現しています。

サンプルコード②:nth-of-typeとhoverの活用

続いて、:nth-of-type()を使って兄弟要素ごとに異なる背景色を設定し、:hoverでホバー時に色を変える例です。

<!DOCTYPE html>
<html>
<head>
<title>CSS Pseudo Classes</title>
<style>
form {
    width:70%;
    margin: 0 auto;
    text-align: center;
}
* {
    padding: 2px;
    margin:5px;
    box-sizing: border-box;
}
.child{
    display: inline-block;
    height: 40px;
    width: 40px;
    color: white;
    border: 4px solid black;
}
.child:nth-of-type(1){
    background-color: #FF8A00;
}
.child:nth-of-type(2){
    background-color: #F44336;
}
.child:nth-of-type(3){
    background-color: #C303C3;
}
.child:nth-of-type(4){
    background-color: #4CAF50;
}
.child:nth-of-type(5){
    background-color: #03A9F4;
}
.child:nth-of-type(6){
    background-color: #FEDC11;
}
.child:hover{
    background-color: #000;
}
</style>
</head>
<body>
<form>
<fieldset>
<legend>CSS-Pseudo-Classes</legend>
<div id="container">
<div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div><div class="child"></div>
</div><br>
</body>
</html>

出力結果

このコードを実行すると、次のような表示になります。

div要素にホバーしていない場合:

CSS疑似クラスとは?基本構文から全31種類の一覧と実例まで徹底解説

div要素にホバーしている場合:

CSS疑似クラスとは?基本構文から全31種類の一覧と実例まで徹底解説

このように、:nth-of-type()を使えば各要素に個別のclass名を付けることなく順番に応じたスタイルを適用でき、:hoverと組み合わせることでインタラクティブな演出も簡単に実装できます。

  1. CSSのtext-transformプロパティでテキストの大文字・小文字を変換する方法

    CSSのtext-transformプロパティを使うと、要素内のテキストの大文字・小文字の表示形式を簡単に制御できます。指定できる値は、capitalize、lowercase、uppercase、full-width、full-size-kana、noneの6種類です。 構文 CSSのtext-transformプロパティの構文は以下のとおりです。 Selector {    text-transform: /*value*/ } 指定できる値の一覧 capitalize … 各単語の先頭文字を大文字にします uppercase … すべての文字を大文字にします lo

  2. CSSでテーブルをスタイリングする方法|主要プロパティと実例コード

    CSSによるテーブルのスタイリングとは HTMLのテーブルは、CSSを使うことで罫線・余白・背景などを自由にデザインできます。<table>要素とその子要素をスタイリングする際には、主に以下のプロパティが使用されます。 border罫線の太さ(border-width)、スタイル(border-style)、色(border-color)をまとめて定義できるプロパティです。 border-collapse隣り合うセルの罫線を1本に共有するか(collapse)、セルごとに独立させるか(separate)を指定します。 caption-side<caption>で付け