疑似クラス(単一のコロン :)は、要素の状態または位置に基づいて要素を選択します。これはプレーンなクラスでは表現できないもの、例えば「ホバー中」や「最初の子要素」のようなものです。
State pseudo-classes (インタラクション)
css
{ : blue; }
{ : solid; }
{ : (); }
{ : ; }
{ }
{ }
リンクの順序は重要です(LVHA)::link、:visited、:hover、:active。
li:first-child { } /* first li among its siblings */
li:last-child { } /* last one */
li:nth-child(2) { } /* the 2nd */
li:nth-child(odd) { } /* 1st, 3rd, 5th... — zebra striping */
li:nth-child(3n) { } /* every 3rd */
p:only-child { } /* a p that's the sole child */
:nth-child() は強力です — 2n(偶数)、2n+1(奇数)、3n(3つごと)など。
input:required { }
input:invalid { border-color: red; }
:is(h1, h2, h3) { } /* matches any — shortens selector lists */
.card:has(img) { } /* the "parent selector": a card that CONTAINS an img */
:not(.active) { } /* everything except .active */
疑似クラスは1つのコロンを使用します(:hover、状態)。疑似要素は2つ使用します(::before、生成された部分)。混同しないでください。
疑似クラスは、追加のマークアップや JavaScript なしで、インタラクション(hover/focus — 使いやすくアクセス可能な UI に必須)と構造(ストライピング、first/last)をスタイル化できます。
モダンなもの(:has、:is、:focus-visible)は、以前は JS または繰り返しセレクタが必要だった問題を解決します。