テーブルの背景色を奇数業と偶数行で塗り分けたい

最終更新日

奇数行と偶数行で交互に色を変えて、シマシマのテーブルを作るとき、「:nth-child(n)」セレクタを使って、テーブル行を交互に塗分けます。非常によく使われるテクニックです。

:nth-child(n)セレクタ

「:nth-child(n)」セレクタは、「〇番目の要素を選択する」セレクタです。()の中に入れる数字、もしくは簡単な数式で、何番目の要素が選択されるかが決まります。

td:nth-child(4)

<td>の親要素、つまり<tr>の子要素のうち、4番目が<td>なら選択されます。同じように「td:nth-child(6)」なら、<tr>の子要素の6番目が<td>なら選択されます。

tbody tr:nth-child(2n)

()内には、「n」を使った簡単な数式を入れることができます。nは、0、1、2、3、・・・と、0以上の整数を指します。たとえば「2n」と書いたら、「0、1、2、3・・の2倍」、つまり「0、2、4、6・・・番目」の要素が選択されます。また、()内に数字や数式でなく「odd」「even」というキーワードも使えます。「:nth-child(odd)」の場合は、奇数番目の要素が選択されます。これは、「:nth-child(2n+1)」と同じです。また、「:nth-child(even)」の場合は偶数番目の要素が選択されます。「:nth-child(2n)」と同じです。

「:first-child」、「:last-child」

「:nth-child(n)」と似たようなセレクタ「:first-child」、「:last-child」というセレクタもあります。これらはそれぞれ「最初(1番目)の要素」「最後の要素」を選択します。

サンプル

<!DOCTYPE html>
<html lang="ja">
  <head>
    <title>サンプルページ</title>
    <meta charset="uft-8"><!-文字コードを指定->
    <style>
      table{
        border-collapse:collapse;
        width:100%;
        table-layout: fixed;
      }
      
      td,th{
        padding: 6px 20px;
        border: 1px solid #b7b7b7;
      }
      tbody tr:nth-child(2n){
        background:#ecfafc;
      }
      
    </style>
  </head> 
  <body>
      <table>
      <thead>
        <tr>
          <th>年月</th><th>酒井営業所</th><th>小湊営業所</th><th>池田営業所</th>
      </tr>
      </thead>
      <caption>東部営業所の売上一覧</caption>
      <tbody>
          <tr>
              <td>2022/1</td><td>500万円</td><td>2,100万円</td><td>250万円</td>
          </tr>
          <tr>
              <td>2022/2</td><td>1,500万円</td><td>300万円</td><td>3,500万円</td>
          </tr>
          <tr>
            <td>2022/3</td><td>2,500万円</td><td>1,700万円</td><td>1,500万円</td>
          </tr>
          <tr>
            <td>2022/4</td><td>2,500万円</td><td>1,700万円</td><td>1,500万円</td>
          </tr>
          <tr>
            <td>2022/5</td><td>2,300万円</td><td>,700万円</td><td>1,500万円</td>
          </tr>
          <tr>
            <td>2022/6</td><td>1,500万円</td><td>1,00万円</td><td>500万円</td>
          </tr>
          <tr>
            <td>2022/7</td><td>500万円</td><td>1,700万円</td><td>1,00万円</td>
          </tr>
        </tbody>
      </table>
   </body>
</html>

実行結果

実行結果