メモ: CSS3で表を縞パンにする

久々にHTMLとCSSを書いていて、テーブルの奇数行と偶数行で背景色を変えようとしました。

業務アプリの一覧表示でよくある、シマシマの表ですね。

で、CSS3のnth-child()擬似クラスを知ったのでメモ。

こんな元表があったとして。

<table>
       <tr>
               <th>No.</th>
               <th>名前</th>
               <th>所属</th>
       </tr>
       <tr>
               <td>1</td>
               <td>鈴木</td>
               <td>幽霊事業部</td>
       </tr>
       <tr>
               <td>2</td>
               <td>佐藤</td>
               <td>モンスター本部</td>
       </tr>
       <tr>
               <td>3</td>
               <td>田中</td>
               <td>妖怪事業部</td>
       </tr>
       <tr>
               <td>4</td>
               <td>小林</td>
               <td>おばけ本部</td>
       </tr>
</table>

ずっっっとこんなふうに書いていたんだけれども。

<table>
       <tr class="odd">
               <th>No.</th>
               <th>名前</th>
               <th>所属</th>
       </tr>
       <tr class="even">
               <td>1</td>
               <td>鈴木</td>
               <td>幽霊事業部</td>
       </tr>
       <tr class="odd">
               <td>2</td>
               <td>佐藤</td>
               <td>モンスター本部</td>
       </tr>
       <tr class="even">
               <td>3</td>
               <td>田中</td>
               <td>妖怪事業部</td>
       </tr>
       <tr class="odd">
               <td>4</td>
               <td>小林</td>
               <td>おばけ本部</td>
       </tr>
</table>
tr.odd td
       {
       background-color: #fff;
       }

tr.even td
       {
       background-color: #f4f4f4;
       }

CSS3なら、擬似クラスなるものを使って、こうするだけなんですってね。

tr:nth-child(odd)
       {
       background-color: #fff;
       }

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

元のテーブルをいじらなくてよい。素晴らしい。知らなかったよ。