cssしやすいテーブルマークアップ

大上段に構えましたけれども、要は<thead>, <th>を使えば楽できるんとちゃうかな?っていうことです。

悪い表組み

悪い表組みの要素を簡単にリストしてみます

  • <th>を使ってない
  • <thead><tfoot><tbody>が存在しない
  • 以上をふまえ<td class="head"> とかあまり意味づけされてないものだけでマークアップ

とまあ、当たり前といえば当たり前ですが、知ると知らんとでは大違いです。マークアップ量もcssコード量も管理のしやすさも歴然とした差がでてきますね。

th=row型

あまりよろしくないマークアップ

肩パッド 170 60
肩パッド 170 60
肩パッド 170 60

<td class="name"> と意味づけはされているように見えますが、そんなものよりも<th>!

<th>とはテーブルセルの見出しとでもいいましょうか。scope属性を使ってその見出しが列に影響するのか、行に影響するのかを決められます。この場合は行なのでscope="row"ですね。私は便宜上この表組みパターンを「th=row型」と呼んでいます。

よろしいマークアップ

katapad    
katapad    
katapad    

th=row, thead型

あまりよろしくないマークアップ

名前 身長 体重
肩パッド 170 60
中村 190 30

こちらも全て<td>のみで構成された表組みです。いけませんね〜。classがたくさん増えてしまい、見た目もよくありませんし、cssも面倒です。

というわけで<thead><tbody>の登場です。表組みのヘッダとなるとこを<thead>、本文となるところを<tbody>と設定します。ホームページビルダーでよく見る<tbody>はそういう意味がありました。<tfoot>は最後の行で「合計」とかあるでしょう。あのへんですね。IE以外のモダンブラウザでは<table>の高さを決めてやれば<thead><tfoot>は固定表示、<tbody>部分のみスクロールされるっていうのんも可能です。

これで<th><td>の局所化が行えるのでcssも定義しやすいですね。

余談ですが、<thead><tfoot>がなければ<tbody>は省略可能です。確か…。みんなで仕様書か益子氏の本でも読みましょう。

よろしいマークアップ

     
     
     

そのほか役立つtableの要素:<col>,<colgroup>

ここではあまり触れませんが、<table>には<col><colgroup>という列選択する要素も含むことができます。列ごとに背景色を変えたり、ということもできます。IE6でも動きますが、確かボーダーあたりの挙動がおかしかったはず。まあ、背景色を変える、というのが使用頻度の高い目的となるでしょうから、なにかあったらなにかあったでエンジョイしましょう。

ページトップへ戻る