CSSのnth-child疑似クラスを使って、指定番目の要素だけを装飾する方法
それでは、CSSのnth-child疑似クラスを使う具体的な記述方法を解説いたします。ここでは6つの表示サンプルと、それを実現するCSSソースを記載しています。それら6つの表示に使っているHTMLソースは、すべて共通して以下の通りです。
<ol>
   <li>ここは1番目の項目です。</li>
   <li>ここは2番目の項目です。</li>
   <li>ここは3番目の項目です。</li>
       :   :   :
   <li>ここは8番目の項目です。</li>
</ol>
このHTMLソースには何の属性も付加していない点がポイントです。class属性やid属性などがなくても、CSSソースに記述するnth-child疑似クラスを使うことで、特定の要素のみを装飾対象にできます。 【本記事で解説するCSSの書き方一覧】
- 奇数番目と偶数番目とで交互に装飾を分けるCSSの書き方
- 3の倍数ごとに装飾を分けるCSSの書き方
- 4の倍数ごとに装飾を分けるCSSの書き方
- 補足:奇数・偶数を表す専用の書き方もある
- 「最初の3つ」と「それ以降」とで装飾を分けるCSSの書き方 (※次のページ)
- 「最後から3つ」と「それ以前」とで装飾を分けるCSSの書き方 (※次のページ)
- 最初(先頭要素)と最後(末尾要素)だけを装飾するCSSの書き方 (※次のページ)
- 注意点:nth-child疑似クラスでの順番の解釈について (※次のページ)
- 参考:指定の要素だけの順番を指定できるnth-of-type疑似クラス (※次のページ)
奇数番目と偶数番目とで交互に装飾を分けるCSSの書き方
 
奇数行と偶数行で装飾を分ける
CSSのnth-child疑似クラスを使えば、このように交互に装飾を変えるのも簡単です。
偶数(2の倍数)番目だけを対象に装飾するには「:nth-child(2n)」と指定し、奇数(2の倍数+1)番目だけを対象に装飾するには「:nth-child(2n+1)」と指定します。具体的には、下記のようにCSSソースを記述します。
■1項目ずつ交互に装飾を変化させたい場合のCSSソース:
li:nth-child(2n) {
   /* 偶数番目(2,4,6……番目)だけに適用されるCSS */
   color: red;
}
li:nth-child(2n+1) {
   /* 奇数番目(1,3,5……番目)だけに適用されるCSS */
   color: green;
}
上記のCSSソースでは、リスト項目(li要素)の偶数番目を赤色で、奇数番目を緑色で装飾しています。li要素以外を対象にしたい場合は、上記ソースの「li」部分を自由に書き換えて下さい。3の倍数ごとに装飾を分けるCSSの書き方
 
3つを1セットにして、3の倍数ごとに装飾を分ける
- 3種類の各項目を異なる色で表示した上で、
- 1セットごとに余白を加えて区切る
CSSのnth-child疑似クラスを使えば、このように3つを1セットにして3つ目ごとに装飾を変えるのも簡単です。
3番目,6番目,9番目……のように「3の倍数」番目だけを対象に装飾するには「:nth-child(3n)」と指定します。1番目,4番目,7番目……のように「3の倍数+1」番目だけを対象に装飾するには「:nth-child(3n+1)」と指定します。例えば以下のようにCSSソースを記述することで、3種類の装飾を順番に繰り返し適用できます。
■3の倍数ごとに装飾したい場合のCSSソース:
li:nth-child(3n) {
   /* 3の倍数(=3,6,9……)番目だけに適用されるCSS */
   color: red;
   padding-bottom: 0.5em;
}
li:nth-child(3n+1) {
   /* 3の倍数+1(=1,4,7……)番目だけに適用されるCSS */
   color: blue;
}
li:nth-child(3n+2) {
   /* 3の倍数+2(=2,5,8……)番目だけに適用されるCSS */
   color: green;
}
上記のCSSソースでは、リスト項目のうち「3の倍数」番目を赤色で、「3の倍数+1」番目を青色で、「3の倍数+2」番目を緑色で装飾しています。さらに、3つごとに余白を挿入して見やすくするため、「3の倍数」の項目に対しては下側に余白(padding-bottom)も加えています。4の倍数ごとに装飾を分けるCSSの書き方
 
4つを1セットにして、4の倍数ごとに装飾を分ける
4番目,8番目,12番目……のように「4の倍数」番目だけを対象に装飾するには「:nth-child(4n)」と指定します。1番目,5番目,9番目……のように「4の倍数+1」番目だけを対象に装飾するには「:nth-child(4n+1)」と指定します。具体的には、以下のようにCSSソースを記述します。
■4の倍数ごとに装飾したい場合のCSSソース:
li:nth-child(4n) {
   /* 4の倍数(=4,8,12……)番目だけに適用されるCSS */
   padding-bottom: 0.5em;
   color: red;
}
li:nth-child(4n+1) {
   /* 4の倍数+1(=1,5,9……)番目だけに適用されるCSS */
   color: blue;
}
li:nth-child(4n+2) {
   /* 4の倍数+2(=2,6,10……)番目だけに適用されるCSS */
   color: green;
}
li:nth-child(4n+3) {
   /* 4の倍数+3(=3,7,11……)番目だけに適用されるCSS */
   color: #cccc00;
}
上記では、リスト項目のうち「4の倍数」番目を赤色で、「4の倍数+1」番目を青色で、「4の倍数+2」番目を緑色で、「4の倍数+3」番目を黄色(#cccc00)で装飾しています。さらに、4つごとに余白を挿入して見やすくするため、「4の倍数」の項目に対しては下側に余白(padding-bottom)を加えています。補足:奇数・偶数を表す専用の書き方もある
上記では、2の倍数が「2n」、3の倍数が「3n」、4の倍数が「4n」のように話の流れを分かりやすくするために「数字+n」の書き方を紹介しました。しかし、実は奇数と偶数を指定する場合には、以下のような専用の書き方もあります。
:nth-child(even) {
   /* 偶数番目の要素だけに適用されるCSS */
   color: purple;
}
:nth-child(odd) {
   /* 奇数番目の要素だけに適用されるCSS */
   color: skyblue;
}
このように、偶数行など「2の倍数」番目を指定するには「2n」の代わりに偶数を表す英単語「even」と書けます。奇数行など「2の倍数+1」番目を指定するには「2n+1」の代わりに奇数を表す英単語「odd」と書けます。どちらでも好きな書き方を使って下さい。
倍数以外の規則で装飾を分けるCSSの書き方もある
これまでにご紹介した3つのサンプルは、どれも倍数による指定でした。しかし、nth-child疑似クラスで指定できる規則は倍数だけではありません。先頭から3つだけ、末尾から5つだけ、先頭の1つだけ、終わりから2つ目だけ……などのように、任意の位置にある要素だけを装飾することもできます。次のページでは、「先頭から指定個数だけ」に限定したり、特定の位置を決め打ちで指定する方法などをご紹介いたします。








