Last update: 2008-09-09
要素に対して display: table を指定すると、その要素はテーブルとして表示される。というのは CSS リファレンスなどから知識としては得ているが、実際どういった使い方ができるのかはよく分からない。これも使ったことがないプロパティの一つだ。
table セレクタというのは <table>〜</table> の範囲を表として宣言するセレクタで、table ブロック内にはセルの th や td を tr タグで横列のグループにまとめて表形式で表示する。というのはわざわざ説明するようなものではないが、種類に関係ない要素にテーブルとして振舞いするというのはどういった場面だろうか?
というのも HTML にはセレクタで table があるわけだし、他の要素をテーブルに置き換えるという応用に思い至らないわけで、Web で情報を集めてみたが、詳しい情報には今のところ出会っていない。
何となく参考になりそうなものとしては、HTML では table プロパティを利用する機会はほとんどなく、table セレクタを利用するように記述してあったことくらいだ。
なるほど、その通りだと思うけど、だとネタが続かないので実験してみよう。
簡単に理解すると「入れ物」になるわけだが、まっさきに思いつくのは div 要素くらい。なので親要素 div に display: table を設定して、その中に3つの p 要素を入れてみる。
<div id="para-table">
<p id="testblock-a1">この p は子要素1</p>
<p id="testblock-a2">この p は子要素2</p>
<p id="testblock-a3">この p は子要素3</p>
</div>;
この p は子要素1
この p は子要素2
この p は子要素3
うーみゅ、これだと div と何が違うのか分からない。th や td が存在しないので当たり前といえばそのとおりなのだが…、div の直下には th や td といったテーブルの子要素を直接置くことはできないんだなぁ。
CSS テストはプロパティごとにカテゴリ分けしているので、あまりバッティングしない範囲で。3つの p 要素に display: table-cell (th や td と同じ) を設定してみた。
<div id="para-table">
<p id="para-th1">この p は子要素1</p>
<p id="para-th2">この p は子要素2</p>
<p id="para-th3">この p は子要素3</p>
</div>
この p は子要素1
この p は子要素2
この p は子要素3
なんとなくテーブルらしくなってはきた。だが、table セレクタを使用せずに display プロパティでテーブル化することへのメリットは全くなさそう。
これ以上良いアイデアも浮かんでこないので、新たに良いアイデアを思いついたら続編を作るということで、とりあえずテストは終わりにします。
まとめとしては display: table はあくまで入れ物としてのテーブルブロックを用意するだけで、テーブルとして完成させるためにはテーブルを構成する子要素を作らなくてはいけない。ということで HTML でテーブルを作る場合は、やはり table セレクタで作ることが妥当だろう。
あまりやりたくない方法だが、レイアウトデザインのベースブロックとして使う…というのも考えられるが、なんだか嫌ですねぇーそういうの。