CSSの「何番目」を指定する nth-child の使い方

こんにちは、takahashiです。
CSSを書いていると「同じクラスなのに、一部分だけ変えたいな」と思う場面が..たまにはあるでしょう。

たとえば、一覧の2番目だけ色を変えたり、偶数行だけ背景を付けたり。
そんな時によく使うのが、「nth-child」です。
見た目は少しややこしいんですが、仕組み自体は意外とシンプルです。
今日は、そんな「CSSで何番目を指定する方法」について、お話します。

nth-childとは?

CSSでは、要素が「何番目にあるか」を指定できます。
その時に使うのが、:nth-child() という書き方です。
たとえば、こんな感じです。

li:nth-child(2) { color: red; } 

これは、「2番目のliを赤くする」という意味になります。

表や一覧のデザインなどで使われます。

偶数だけ色を変える

tr:nth-child(even) { background: #f5f5f5; } 

これで、2行目、4行目、6行目…という感じで背景色が付きます。

表が見やすくなるので、定番の使い方だったりします。

奇数だけ指定する

li:nth-child(odd) 

こちらは、1・3・5番目…を指定できます。

「odd」が奇数、「even」が偶数。
ここはそのまま英語です。

nが出てくると少しだけ混乱する

nth-childは、「繰り返し」も指定できます。

li:nth-child(3n) 

これは、3・6・9番目…という意味です。

nは「繰り返し」のイメージ。
最初は少し戸惑いますが、慣れるとパターン指定みたいな感覚になります。

たとえば、

li:nth-child(3n+1) 

なら、1・4・7・10…になります。

nth-of-typeとの違い

似たものに、:nth-of-type() があります。

これは「同じ種類のタグの中で何番目か」を見るものです。

最初は混乱しやすいのですが、

・nth-child → 全体の順番
・nth-of-type → 同じタグ内の順番

くらいで覚えておくと、そこまで困らないと思います。

実務ではたまに便利

実際の制作では、クラスを増やさなくて済む場面があります。

「3つごとに余白を消す」
「偶数だけレイアウトを変える」
「最初だけデザインを変える」

そんな調整を、CSSだけで書けたりします。
扱いに少しクセはありますが、たまーに役に立つ存在です。
是非みなさんもそんな場面がもしきたら使ってみてください。それでは、また。

トラックバックURL