"CSS Tips Factory" : Presented by Nishishi via WordPress.

CSSで表を装飾する基本 [, テーブル]

表をスタイルシートで装飾する際、必ず指定しておくべきプロパティが「border-collapse」です。この値は常に記述しておくべきだと言っても良いでしょう。(もちろん、装飾したい内容に寄るのですが。)

HTMLで作成した「表」に対して、スタイルシートを使って、引けるだけ全部の線を引いてみると、以下のようになります。(※緑色の破線を引いてます。)

セル11 セル12 セル13
セル21 セル22 セル23

上記の表示例から分かるとおり、表の内部にある1つ1つのセルに2重に枠線が引かれているように見えます。これは、1つ1つのセルそれぞれに、セルを囲む枠線が表示されるためです。隣同士のセル1つ1つに枠線が存在するため、セルとセルの間に2本の枠線が表示されることになってしまいます。
「表」として見せたい場合、これではちょっと困ります。

そこで、border-collapseプロパティの出番です。このプロパティは、「隣り合う枠線を重ねる」ためのプロパティです。こいつをtable要素に対して指定してやれば、美しく表を見せることができます。例えば、以下のように。

セル11 セル12 セル13
セル21 セル22 セル23

上記の表は、隣り合う枠線が重なった結果、表を構成する線が1本になり、「表らしく」見えているはずです。(※かなり古いブラウザやMac版IEを除く)

このように、border-collapseプロパティは、表の装飾において必須の記述だと言えるでしょう。記述は簡単で、以下のような感じで書くだけです。

table {
   border-collapse: collapse;
}

table要素に対してborder-collapseプロパティの値にcollapseを指定するだけです。これによって、その表(table)内部のすべてのth要素やtr要素の(隣り合う)枠線が重なって1本になります。

ちなみに、border-collapseプロパティのデフォルトの値は「separate」です。これを指定すると、隣り合う枠線は重ならずに離れて表示されます。(何も指定しなければseparateだと解釈されるので、普段記述することはないでしょう。でも、ページ全体にcollapseが適用されているような状況で、一カ所だけseparateにしたい場合などには記述する機会もあるかも知れません。)

※備考※
なお、もはや気にしなくても良いとは思いますが、Mac版IEはborder-collapseプロパティに対応していません。この場合、隣り合う枠線を重ねるのは無理です。苦肉の策として、HTMLのtable要素に対して、cellspacing属性を使って値「0」を指定する方法があります。隣り合う枠線が重なるわけではないものの、枠線同士の距離がゼロになるため、「太い1本の線」には見えてくれます。
例えば、以下のような感じ。

<table cellspacing="0">~

ただ、cellspacing属性は非推奨属性ですから、使うことは望ましくありません。Mac版IEは既に開発も公開も終了している古いブラウザですし、あまり気にしなくてもいいかもしれません。

このCSS TIPSへのコメントはお気軽に! [コメントはまだありません。]

著者紹介

主要なカテゴリ

このCSS TIPSへのコメント・トラックバック

コメントはまだありません。

コメント投稿欄 このCSS TIPSに対するコメント投稿を歓迎します。

(必須)

(必須) ※公開されません

※公開(リンク)されます

コメント:

※投稿内容によってはフィルタによって保留扱いとなる場合があります。その場合は承認後に掲載されます。
※本文中にURLっぽい文字列を記述すると、投稿内容はスパム扱いとなって無視されてしまう場合がありますので書かないようご注意下さい。

トラックバック

このCSS TIPSへのトラックバックURLは以下の通りです。

※言及リンクがないトラックバックは拒否されますのでご注意下さい。また、文字コードはUTF-8でお送りいただける方が望ましいです。