:nth-child を“自在に使いこなす”ための実践パターン集
:nth-child() は CSS の中でも 「繰り返し要素をパターンで選択できる」 とても強力な疑似クラスです。
初心者がここを理解すると、CSS の表現力が一気に広がり、Tailwind CSS でも応用が効くようになります。
ここでは、実務でよく使うパターンを中心に、
CSS と Tailwind の両方でわかりやすく解説します。
:nth-child の基本文法を理解する
CSS の基本形
.item:nth-child(2) {
color: red;
}
CSSこれは「2番目の .item」にだけスタイルを当てます。
HTML
<div class="item">1番目</div>
<div class="item">2番目(赤)</div>
<div class="item">3番目</div>
HTMLTailwind での基本形
Tailwind では nth-child を プレフィックス で表現します。
<div class="[&:nth-child(2)]:text-red-500">1番目</div>
<div class="[&:nth-child(2)]:text-red-500">2番目(赤)</div>
<div class="[&:nth-child(2)]:text-red-500">3番目</div>
HTMLTailwind は nth-child を標準では持たないため、
任意の CSS を適用できる「任意プロパティ構文」 を使います。
:nth-child の“本質”を深掘りする
nth-child は「親の中での順番」で判定される
<div class="box">
<h3>タイトル</h3>
<p>段落1</p>
<p>段落2</p>
</div>
HTML.box p:nth-child(1) { … }
CSSこれは 効きません。
理由
→ 1番目の子は <h3> であり、<p> ではないから。
nth-child は「タグの種類」ではなく「順番」で判定する
ここが最大のつまずきポイントです。
よく使う nth-child の実践パターン
偶数・奇数をスタイリングする(ストライプデザイン)
CSS版
.row:nth-child(odd) {
background: #f9f9f9;
}
.row:nth-child(even) {
background: #efefef;
}
CSSHTML
<div class="row">1行目</div>
<div class="row">2行目</div>
<div class="row">3行目</div>
HTMLTailwind版
<div class="row [&:nth-child(odd)]:bg-gray-50 [&:nth-child(even)]:bg-gray-100">
1行目
</div>
<div class="row [&:nth-child(odd)]:bg-gray-50 [&:nth-child(even)]:bg-gray-100">
2行目
</div>
<div class="row [&:nth-child(odd)]:bg-gray-50 [&:nth-child(even)]:bg-gray-100">
3行目
</div>
HTML3つごとにデザインを変える(グリッドでよく使う)
CSS版
.card:nth-child(3n) {
margin-right: 0;
}
CSSこれは「3, 6, 9…番目のカード」に適用されます。
Tailwind版
<div class="card [&:nth-child(3n)]:mr-0">カード</div>
HTML最初の3つだけデザインを変える
CSS版
.item:nth-child(-n + 3) {
font-weight: bold;
}
CSSこれは「1〜3番目の要素」に適用されます。
Tailwind版
<div class="item [&:nth-child(-n+3)]:font-bold">内容</div>
HTML2番目だけ特別にデザインする
CSS版
.item:nth-child(2) {
color: royalblue;
}
CSSTailwind版
<div class="item [&:nth-child(2)]:text-blue-600">内容</div>
HTMLnth-child の“つまずきポイント”を深掘り
1. nth-child は「タグの種類」を見ない
<div class="box">
<h3>タイトル</h3>
<p>段落1</p>
<p>段落2</p>
</div>
HTML.box p:nth-child(1) { … } /* 効かない */
CSSnth-child は「1番目の子が p かどうか」を見ている
→ 1番目は h3 なので不一致。
2. nth-of-type と混同しやすい
nth-child()→ 親の中での順番nth-of-type()→ 同じタグの中での順番
例:
p:nth-of-type(1) { … }
CSSこれは「最初の p」に必ず効く。
Tailwind でも同じように使える。
<div class="[&>p:nth-of-type(1)]:text-red-500">
HTML3. Tailwind では nth-child を「任意プロパティ」で書く
Tailwind の強みは、
CSS の疑似クラスをそのまま書ける柔軟性 にあります。
<div class="[&:nth-child(odd)]:bg-gray-50">
HTMLこの構文を覚えると、Tailwind の表現力が一気に広がります。
例題で理解を深める
例題:ニュース一覧で「2番目だけ背景色を変える」
CSS版
.news-item:nth-child(2) {
background: #f0f8ff;
}
CSSHTML
<div class="news-item">ニュース1</div>
<div class="news-item">ニュース2(背景色)</div>
<div class="news-item">ニュース3</div>
HTMLTailwind版
<div class="news-item [&:nth-child(2)]:bg-blue-50">ニュース1</div>
<div class="news-item [&:nth-child(2)]:bg-blue-50">ニュース2(背景色)</div>
<div class="news-item [&:nth-child(2)]:bg-blue-50">ニュース3</div>
HTMLまとめ::nth-child を使いこなすコツ
本質
- nth-child は「親の中での順番」で判定される
- タグの種類は関係ない
- nth-of-type と混同しないこと
実務での使いどころ
- テーブルやリストのストライプデザイン
- グリッドの 3n パターン
- 最初の数個だけ強調
- 特定の番号だけデザイン変更
Tailwind の強み
nth-childを任意プロパティで柔軟に書ける- CSS と同じ感覚で使える


