CSS

The nth selectors in CSS are used to select and apply styles to child elements at specific positions within their parent element.

nth selectors

 CSSの n番目系セレクタは、特定の順番に位置する要素を選択するためのセレクタです。

最初の
:first-child, :first-of-type
最後の
:last-child, :last-of-type
n番目の
:nth-child(n), :nth-of-type(n)
後ろから n番目の
:nth-last-child(n), :nth-last-of-type(n)
1個だけ
:only-child, :only-of-type

-child系と -of-type系の違い

 次のような HTML文書を用意しました。

HTML

<div class="container">
	<h2>h2 element for title</h2>
	<p>First p element</p>
	<p>Second p element</p>
	<p>Third p element</p>
</div>

 これに CSSを適用してみます。

 まずは、:first-childを使ってみます。

CSS

.container :first-child {
	color: darkred;
}

 :first-childは、最初の要素。親要素の中にある“すべての”子要素の一番最初にある要素。なので、ここのサンプルでは、親要素(div.container)の中にある最初の子要素(h2 element for title)の色が darkredに変わっているのが確認できました。

h2 element for title

First p element

Second p element

Third p element

 次に、:first-of-typeを使ってみます。

CSS

.container :first-of-type {
	color: darkgreen;
}

 :first-of-typeは、各要素の最初。親要素の中にある“各”子要素の一番最初にある要素。なので、ここのサンプルでは、親要素(div.container)の中にある h2要素の最初である「h2 element for title」と p要素の最初である「First p element」の2つの色が darkgreenに変わっているのが確認できました。

h2 element for title

First p element

Second p element

Third p element

 次は、p要素を指定して :first-childを使ってみます。

CSS

.container p:first-child {
	color: darkred;
}

 これだと、親要素(div.container)の最初の子要素が “p要素ではない”ため色が変わりませんでした。

h2 element for title

First p element

Second p element

Third p element

 次は、p要素を指定して :first-of-typeを使ってみます。

CSS

.container p:first-of-type {
	color: darkgreen;
}

 今度は、親要素(div.container)の中にある子要素の中で、p要素の最初の要素である「First p element」のみの色が darkgreenに変わったのが確認できました。

h2 element for title

First p element

Second p element

Third p element

 同じ“最初の要素”を指定する場合でも、-child系と -of-type系では挙動が変わってきますので、それぞれの特徴をしっかりと把握して使い分ける必要があるようです。