テーブルのレイアウトを調整する方法は、大きく分けて以下の2パターンあります。
- HTML属性で指定
- CSSで指定
table要素はcellspacing
やcellpadding
等の属性を持っているため、HTMLだけでも自在にレイアウト調整が可能です。
とは言え、他の要素と同様にサイト内のデザインをCSSで一括管理したい場合もあるでしょう。
今回は、table要素の余白や枠線をCSSで指定する方法を整理しておきたいと思います。
もくじ
1.cellspacing(セル間の余白)をCSSで調整する方法
table
要素で使うことができるcellspacing
属性は、テーブル内のセルとセルの間の余白を設定します。
属性で指定するには以下のようにtable
要素の中に直接入力します。
値にはpxの数値が入りますが、「px」は省いて問題ありません。
border
属性(枠線)もあわせて指定すると、以下のようにセル間に「5px」分の隙間が空きます。

今度は、これと全く同じ操作をCSSで試みてましょう。
CSSでセル間の余白を指定するには、まずtable要素に対してborder-collapse
プロパティをseparate
に設定する必要があります。
次に「どのくらい余白を空けるか」決めます。
余白の値はboder-spacing
プロパティで調節できます。
HTML属性とは異なり、値にはきちんと「px」を付けないと反映されないので注意してください。
これで各セルの上下左右に「5px」分のスペースが開きます。
あるいは「border-spacing: 5px 3px;
」のようにスペースを開けて別の値を入力すれば、上下に5px、左右に3pxの余白が適用されます。
また、枠線を指定するには属性と同様「border
」で指定しますが、線幅のほかにも線の種類、色を同時に設定可能です。
ただし、このままだとテーブル全体を枠線で囲めますが、各セルには適用されません。

先ほどの属性指定のように、個別のセルにも枠線を適用させるには、以下のようにth・tr要素にもborderを指定する必要があります。
これで、先ほどのテーブルとまったく同じものが出力されるはずです。
2.cellpadding(セル内の余白)をCSSで調整する方法
前のチャプターでは「セル間」の余白を調節する方法について解説しました。
今度は「セル内」の余白をCSSで指定してみましょう。

table要素に直書きでセル内の余白を指定するにはcellpadding
属性を使います。
cellspacing
と同様、数値のみでOKです。
では、これをCSSで指定するには、どのようなプロパティが必要なのか?
この場合は、テーブル特有のプロパティではなくpadding
でOKです。
ただし、padding
の適用先はtable
要素ではなく、td
・th
要素であることに注意しておきましょう。
これで属性指定と同様の余白がテーブルに適用されます。
3.まとめ
table要素には様々な属性が設けられており、HTMLでも自由にスタイルを変更することが可能です。
今回はCSSで指定する方法を解説しましたが、プロパティを複数設定しなければならなかったり、セレクタの指定先によって挙動が違ったりと、ちょっと使い勝手がややこしいかもしれません。
簡単な表を作る程度なら、むしろ属性指定のほうが効率が良いと思います。
最後に、今回のおさらいをしてレクチャーを締めくくりたいと思います。
- table要素のレイアウトは属性だけでなく、CSSでも調整できる
- セルとセルの間に余白を設けたい場合は、
table
要素のborder-collapse
プロパティをseparate
に設定しよう - さらに
border-spacing
プロパティを使って、余白の大きさを指定しよう - セル内の余白を指定するなら
padding
でOK - ただし、table要素ではなく
td
・th
要素に設定すること