:nth-child()で作るゼブラデータテーブル

:nth-child()で作るゼブラデータテーブル

基本を押さえたところで、早速:nth-child()擬似クラスを使用して、図6のような、1行ごとに背景色を変えたゼブラテーブルを作成してみましょう。

図6:ゼブラテーブル

CSS2.0でこれを実現しようとすると、1行ごとのtr要素に、class="even"あるいはclass="odd"というような記述を付け足してあげる必要がありました。CSS3であれば、tr:nth-child(even)で偶数行、:nth-child(odd)で奇数行というようにスタイルの適用先を簡単に指定できるため、HTML側にスタイルのためのコードを追記する必要はありません。

[リスト11]ゼブラテーブルのHTMLソース(table.html)

<table>
<caption>CSS3で追加されたセレクタのIE6~8およびjQueryの対応状況</caption>
<thead>
<tr><th>パターン</th><th>概要</th><th>IE6</th><th>IE7</th><th>IE8</th><th>jQuery</th></tr>
</thead>
<tbody>
<tr><td>E[foo^="bar"]</td><td>属性「foo」の値が「bar」と前方一致するE要素</td><td>×</td><td>○</td><td>○</td><td>○</td></tr>
<tr><td>E[foo$="bar"]</td><td>属性「foo」の値が「bar」と後方一致するE要素</td><td>×</td><td>○</td><td>○</td><td>○</td></tr>
<tr><td>E[foo*="bar"]</td><td>属性「foo」の値が「bar」と部分一致するE要素</td><td>×</td><td>○</td><td>○</td><td>○</td></tr>
~中略~
<tr><td>E:last-of-type</td><td>兄弟関係にあるもののうち最後のE要素</td><td>×</td><td>×</td><td>×<<tr><td>E ~ F</td><td>E要素の後に出現するF要素</td><td>×</td><td>○</td><td>○</td><td>○</td></tr></tbody>
</table>

CSSも、とてもシンプルで簡単です。例では、tr:nth-child(even)として、偶数行に対して、薄い青色(#f7f7fb)の背景色を適用しています。

[リスト12]CSSソース:偶数行に背景色を指定(table.css)

tr:nth-child(even) {

  background-color: #f7f7fb;

}

未対応のブラウザをjQueryで補完

前項同様、:nth-child()に対応していないブラウザには、jQueryを利用して対応しましょう。table.jsのコードは次のようになります。

[リスト13]未対応ブラウザ用コード(table.js)

$(function(){
  $("tr:nth-child(even)").css("background-color", "#f7f7fb");
});

サンプルでは、さらに見出しの背景をlinear-gradient関数でグラデーションにしています。

[リスト14]CSSソース:見出しにグラデーションを指定(table.css)

th {
  color: #ffffff;
  background: -moz-linear-gradient(top, #0000ff, #0066ff);
  background: -webkit-gradient(linear, left top, left bottom, from(#0000ff),to(#0066ff));
  background: linear-gradient(top, #0000ff, #0066ff);
  border:1px solid #cccccc;
}

linear-gradient関数に未対応のIEには、独自のfilterプロパティを利用します。

[リスト15]IE専用CSSソース:見出しにグラデーションを指定(ie_table.css)

th {
  background: transparent; /* 背景をリセット */
  -ms-filter: progid:DXImageTransform.Microsoft.Gradient(StartColorStr='#0000ff',EndColorStr='#0066ff');
  filter: progid:DXImageTransform.Microsoft.Gradient(StartColorStr='#0000ff',EndColorStr='#0066ff');
}

これで、IEで表示しても、同じような見栄えになります。

図7:ゼブラテーブル

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30