CSSで偶数要素と奇数要素で別々のスタイルを設定する
CSSで偶数要素と奇数要素で別々のスタイルを設定する

CSSで偶数要素と奇数要素で別々のスタイルを設定する

CSSでliといった要素に対して、偶数番目と奇数番目でスタイルを変えるには:nth-child()という擬似クラスを使用します。

具体的には、奇数番目の要素には:nth-child(odd)を、偶数番目の要素には:nth-child(even)を指定するのが一番簡単です。

コード例

以下は、リストの奇数番目の背景色を薄い灰色に、偶数番目の背景色をオレンジ色にする場合の例です。

<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
<li>Item 5</li>
<li>Item 6</li>
</ul>

li:nth-child(odd) {
  background-color: lightgrey;
}

li:nth-child(even) {
  background-color: orange;
}

別の指定方法

キーワードのoddとevenの代わりに、数式を使って指定することもできます。

・奇数:i:nth-child(2n+1)
・偶数:li:nth-child(2n)

この数式では、nが0から始まる整数を表します。例えば、2n+1は1、3、5...となり奇数番目の要素を選択します。同様に、2nは2、4、6...となり偶数番目の要素を選択します。

こちらの方法は、シンプルな偶数、奇数以外にも下記のような間隔の指定もできます。

1.3つおきにスタイルを適用する

/* 3の倍数の要素を選択 */
li:nth-child(3n) {
background-color: lightblue;
}

2.3つおきに、ただし1番目から始める

/* (3 * 0 + 1), (3 * 1 + 1), (3 * 2 + 1), ... */
li:nth-child(3n+1) {
background-color: lightgreen;
}

3.最初の3つの要素だけに適用する

/* 3番目までの要素を選択 */
li:nth-child(-n+3) {
font-weight: bold;
}

4. 4番目以降のすべての要素に適用する

/* 4番目以降の要素をすべて選択 */
li:nth-child(n+4) {
color: grey;
}

jsなどで動的にclassなどをつけるよりも簡単に対応できるので、規則性があるのでしたらcssのみで対応するようにしましょう!

関連記事