
6日でできる 新HTML入門|CSSで作る見やすい表
表はCSSでぐっと読みやすくなる。枠線、余白、配置、キャプションを整えて、情報が伝わる美しいテーブルを作ろう。
HTMLのtableタグを使うと、商品一覧、料金表、スケジュール、成績表、比較表など、行と列で整理したい情報を分かりやすく表示できます。ただし、HTMLだけで表を作った場合、見た目はとてもシンプルです。セルの境界が分かりにくかったり、文字が詰まって見えたり、表のタイトルが目立たなかったりすることがあります。
そこで大切になるのが、表に対するCSSの指定です。thやtdに枠線を付ける、paddingでセル内に余白を作る、text-alignやvertical-alignで文字の位置を整える、background-colorで見出しや特定のセルを目立たせるなど、CSSを使うことで表は一気に読みやすくなります。
また、captionタグを使った表のタイトルもCSSで整えられます。caption-sideを使えば、キャプションを表の上に置くか下に置くかを指定できます。さらに、border-collapseやborder-spacingを使うと、セル同士の境界線を重ねるか、セル間に隙間を作るかを調整できます。
表は、データをきれいに並べるための道具です。しかし、ただ並べるだけではなく、見出し、余白、枠線、配置を整えることで、見る人が内容を素早く理解しやすくなります。ここでは、CSSを使って表を見やすく整える方法を、サンプルHTMLと一緒に順番に確認していきます。
セルの基本スタイルを整える
表を見やすくする第一歩は、thとtdの見た目を整えることです。thは見出しセル、tdは通常のデータセルです。この2つに共通のCSSを指定すると、表全体の見た目をそろえられます。
セルには、枠線、横幅、高さ、内部余白、文字揃えなどを指定できます。特にborderとpaddingは、表の読みやすさに大きく関わります。
セルに指定する主なCSS
| CSS | 役割 |
|---|---|
| border | セルの枠線を指定する |
| width | セルの横幅を指定する |
| height | セルの高さを指定する |
| padding | セル内の余白を指定する |
| text-align | セル内の水平方向の文字位置を指定する |
| vertical-align | セル内の垂直方向の文字位置を指定する |
borderを指定すると、セルの境界が分かりやすくなります。paddingを指定すると、文字と枠線の間にゆとりができて読みやすくなります。text-alignで中央揃えや右揃えにすると、数字や記号の並びも整えやすくなります。
図1:thとtdに共通スタイルを指定する

この図から分かること
thとtdに共通のCSSを指定すると、表全体の見た目をそろえられます。枠線でセルの境界を分かりやすくし、paddingで文字と枠線の間に余白を作ることで、表の読みやすさが高まります。text-alignとvertical-alignを使えば、セル内の文字位置も整えられます。
共通セルの書式を指定する
最初の例では、thとtdに同じスタイルを指定して、表全体のセルを整えます。商品名、価格、在庫を並べたシンプルな表を使って確認しましょう。
ファイル名: Lesson22-1.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>セル共通スタイル</title>
<style>
body {
font-family: sans-serif;
line-height: 1.7;
}
table {
border-collapse: collapse;
}
th,
td {
border: solid 1px #444444;
width: 130px;
height: 42px;
padding: 8px;
text-align: center;
vertical-align: middle;
}
</style>
</head>
<body>
<h1>共通セルの書式指定</h1>
<table>
<tr>
<th>商品</th>
<th>価格</th>
<th>在庫</th>
</tr>
<tr>
<td>カフェラテ</td>
<td>420円</td>
<td>あり</td>
</tr>
<tr>
<td>ハーブティー</td>
<td>380円</td>
<td>少なめ</td>
</tr>
</table>
</body>
</html>ブラウザの表示例

このHTMLでは、thとtdをまとめて指定しています。th, tdのようにカンマで区切って書くと、複数のセレクターに同じCSSを適用できます。
border: solid 1px #444444;では、セルの周囲に1pxの実線を付けています。widthとheightでセルの大きさをそろえ、paddingで文字のまわりに余白を作っています。
text-align: center;は、セル内の文字を水平方向の中央にそろえる指定です。vertical-align: middle;は、セル内の文字を縦方向の中央にそろえる指定です。セルの高さを指定している場合、vertical-alignを使うと、文字が上に寄りすぎず、見た目が整います。
tableにはborder-collapse: collapse;を指定しています。これにより、隣り合うセルの枠線が重なって表示され、表全体がすっきり見えます。
特定のセルだけ見た目を変える
すべてのセルに同じCSSを指定するだけでなく、特定のセルだけ背景色や文字揃えを変えたい場合もあります。たとえば、見出しセルだけ背景色を付けたり、在庫数や金額だけ右揃えにしたりするような使い方です。
特定のセルだけを指定するには、class属性を使うと便利です。
<td class="stock">残り12</td>CSSでは、次のように指定できます。
td.stock {
text-align: right;
background-color: #EEF3FF;
}td.stockは、stockというclassが付いたtdタグだけを対象にする指定です。ページ内の他のtdには影響しないため、必要なセルだけを細かく調整できます。
個別指定でよく使う例
| 指定したい場所 | よく使うCSS |
|---|---|
| 見出しセル | background-color、font-weight、color |
| 数字のセル | text-align: right; |
| 注意が必要なセル | background-color、color |
| 特定の列 | classを付けて背景色や揃えを指定 |
表は、すべてのセルを同じ見た目にすると整って見えますが、重要な部分まで同じ見た目だと、情報の違いが伝わりにくくなることがあります。見出しや注目セルを少しだけ変えると、読み手が内容を追いやすくなります。
ファイル名: Lesson22-2.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>個別セルスタイル</title>
<style>
body {
font-family: sans-serif;
line-height: 1.7;
}
table {
border-collapse: collapse;
}
th,
td {
border: solid 1px #444444;
padding: 7px 12px;
}
th {
background-color: #FFF0D6;
color: #5D4037;
}
td.stock {
text-align: right;
background-color: #EEF3FF;
}
</style>
</head>
<body>
<h1>個別セルの書式指定</h1>
<table>
<tr>
<th>商品</th>
<th>価格</th>
<th>在庫数</th>
</tr>
<tr>
<td>カフェラテ</td>
<td>420円</td>
<td class="stock">18</td>
</tr>
<tr>
<td>ハーブティー</td>
<td>380円</td>
<td class="stock">7</td>
</tr>
</table>
</body>
</html>ブラウザの表示例

この例では、thに背景色を指定し、見出し行を分かりやすくしています。表の見出しは、データ行と区別できるように少し色を付けると読みやすくなります。
また、在庫数のセルにはclass="stock"を付けています。CSSではtd.stockに対して、text-align: right;とbackground-colorを指定しています。数値は右揃えにすると桁の位置をそろえやすくなります。今回の例では在庫数が1桁と2桁ですが、右揃えにすると数字の比較がしやすくなります。
captionタグで表のタイトルを付ける
表が何を表しているのかを示したいときは、captionタグを使います。captionタグは、tableタグの直後に書く表のタイトルです。
<table>
<caption>ドリンクメニュー</caption>
<tr>
<th>名前</th>
<th>価格</th>
</tr>
</table>captionを付けると、表の内容がひと目で分かりやすくなります。特に、ページ内に複数の表がある場合は、captionを付けておくと、どの表が何の情報なのかを整理しやすくなります。
captionに指定しやすいCSS
| CSS | 役割 |
|---|---|
| caption-side | キャプションを表の上か下に配置する |
| text-align | キャプションの文字位置を指定する |
| font-size | キャプションの文字サイズを指定する |
| font-weight | キャプションの文字の太さを指定する |
| padding | キャプション周辺の余白を指定する |
captionは、初期状態では表の上に表示されます。CSSでcaption-sideを指定すると、表の下に置くこともできます。
基本的なキャプションを付ける
次の例では、ドリンクメニューの表にcaptionを付けています。表の上にタイトルが表示されることで、表の内容が分かりやすくなります。
ファイル名: Lesson22-3.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>基本キャプション</title>
<style>
body {
font-family: sans-serif;
line-height: 1.7;
}
table {
border-collapse: collapse;
margin: 20px auto;
}
caption {
font-weight: bold;
font-size: 1.2em;
margin-bottom: 8px;
}
th,
td {
border: solid 1px #444444;
width: 130px;
padding: 7px 10px;
text-align: center;
}
th {
background-color: #E8F5E9;
}
</style>
</head>
<body>
<h1>基本キャプション</h1>
<table>
<caption>ドリンクメニュー</caption>
<tr>
<th>名前</th>
<th>価格</th>
</tr>
<tr>
<td>カフェラテ</td>
<td>420円</td>
</tr>
<tr>
<td>ハーブティー</td>
<td>380円</td>
</tr>
</table>
</body>
</html>ブラウザの表示例

このHTMLでは、tableタグの直後にcaptionタグを書いています。captionにはドリンクメニューという表のタイトルを入れています。
CSSでは、captionにfont-weight: bold;とfont-size: 1.2em;を指定して、表のタイトルとして目立つようにしています。margin-bottomを指定しているため、キャプションと表の間に少し余白ができます。
captionは、表の外側にある単なる見出しではなく、表のタイトルとして意味を持つタグです。表の内容を説明する短いタイトルを付けると、表全体が理解しやすくなります。
図2:caption-sideでキャプションの位置を変える

この図から分かること
captionタグは表のタイトルを表します。caption-sideを使うと、キャプションを表の上に置くか下に置くかを指定できます。さらにtext-alignを組み合わせると、左寄せ、中央寄せ、右寄せなどの配置も調整できます。
キャプションを表の下に配置する
captionは、初期状態では表の上に表示されます。更新日や補足説明のように、表の下に表示したい情報がある場合は、caption-side: bottom;を指定します。
ファイル名: Lesson22-4.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>下部キャプション</title>
<style>
body {
font-family: sans-serif;
line-height: 1.7;
}
table {
border-collapse: collapse;
margin: 20px auto;
}
th,
td {
border: solid 1px #444444;
padding: 7px 12px;
text-align: center;
}
th {
background-color: #F3E5F5;
}
caption {
caption-side: bottom;
text-align: right;
font-size: 0.9em;
padding-top: 6px;
color: #555555;
}
</style>
</head>
<body>
<h1>下部キャプション</h1>
<table>
<caption>2026年7月 更新</caption>
<tr>
<th>名前</th>
<th>価格</th>
</tr>
<tr>
<td>カフェラテ</td>
<td>420円</td>
</tr>
<tr>
<td>ハーブティー</td>
<td>380円</td>
</tr>
</table>
</body>
</html>ブラウザの表示例

この例では、captionにcaption-side: bottom;を指定しています。これにより、キャプションが表の下に表示されます。
text-align: right;を指定しているため、キャプションの文字は右寄せになります。更新日や注記のような情報は、表の下に小さめに表示すると自然に見えます。
captionは、表の説明やタイトルとして使える便利なタグです。表の内容そのものを示すタイトルなら上部、更新日や補足情報なら下部に置くなど、内容に応じて配置を考えるとよいでしょう。
border-collapseでセルの境界線を整える
表の枠線を整えるうえで重要なのがborder-collapseです。border-collapseは、隣り合うセルの枠線を重ねるか、セルごとに分けて表示するかを指定するCSSです。
border-collapseの主な値
| 値 | 説明 |
|---|---|
| collapse | 隣り合うセルの枠線を重ねて表示する |
| separate | セルごとに枠線を独立して表示する |
collapseを使うと、セル同士の枠線が共有されるため、すっきりした表になります。料金表や一覧表のように、きっちりした表を作りたいときによく使います。
separateを使うと、セルとセルの間に隙間を作れます。カードのような雰囲気を持つ表や、セルごとの区切りを少し強調したい表に向いています。
collapseで枠線を共有する
次の例では、border-collapse: collapse;を使って、隣り合うセルの枠線を重ねて表示します。
ファイル名: Lesson22-5.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>border-collapseのcollapse</title>
<style>
body {
font-family: sans-serif;
line-height: 1.7;
}
table {
border-collapse: collapse;
margin: 20px;
}
th,
td {
border: solid 2px #336699;
padding: 8px 14px;
text-align: center;
}
th {
background-color: #E3F2FD;
}
</style>
</head>
<body>
<h1>枠線共有の表</h1>
<table>
<tr>
<th>A列</th>
<th>B列</th>
</tr>
<tr>
<td>10</td>
<td>20</td>
</tr>
</table>
</body>
</html>ブラウザの表示例

このHTMLでは、tableにborder-collapse: collapse;を指定しています。thとtdには2pxの枠線を指定していますが、隣り合うセルの境界線は重なって表示されます。
collapseは、一般的な表でよく使われる指定です。セルの境界がすっきりまとまり、一覧表として読みやすくなります。表の基本スタイルとして、まずcollapseを覚えておくとよいでしょう。
separateでセル間に隙間を残す
border-collapse: separate;を使うと、セルの枠線がそれぞれ独立して表示されます。さらにborder-spacingを指定すると、セルとセルの間隔を調整できます。
ファイル名: Lesson22-6.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>border-collapseのseparate</title>
<style>
body {
font-family: sans-serif;
line-height: 1.7;
}
table {
border-collapse: separate;
border-spacing: 5px;
margin: 20px;
}
th,
td {
border: solid 2px #336699;
padding: 8px 14px;
text-align: center;
background-color: #FFFFFF;
}
th {
background-color: #E8F5E9;
}
</style>
</head>
<body>
<h1>枠線分離の表</h1>
<table>
<tr>
<th>A列</th>
<th>B列</th>
</tr>
<tr>
<td>10</td>
<td>20</td>
</tr>
</table>
</body>
</html>ブラウザの表示例

この例では、tableにborder-collapse: separate;を指定しています。さらにborder-spacing: 5px;によって、セル同士の間に5pxの隙間を作っています。
separateは、セルが少し離れて表示されるため、collapseとは違う見た目になります。データをきっちり並べたい場合はcollapse、セルごとのまとまりを少し強調したい場合はseparateと考えると分かりやすいです。
border-spacingでセル間隔を調整する
border-spacingは、セルとセルの間隔を指定するCSSです。ただし、border-spacingが有効になるのは、border-collapse: separate;が指定されている場合です。
border-spacingの指定方法
| 指定 | 意味 |
|---|---|
| border-spacing: 10px; | 横方向と縦方向の間隔をどちらも10pxにする |
| border-spacing: 12px 6px; | 横方向を12px、縦方向を6pxにする |
1つの値を指定すると、横方向と縦方向の両方に同じ間隔が付きます。2つの値を指定すると、1つ目が横方向、2つ目が縦方向の間隔になります。
図3:border-collapseとborder-spacingの違い

この図から分かること
border-collapse: collapse;を指定すると、隣り合うセルの枠線が共有され、すっきりした表になります。border-collapse: separate;を指定すると、セルごとの枠線が独立します。その状態でborder-spacingを使うと、横方向と縦方向のセル間隔を細かく調整できます。
border-spacingで横と縦の隙間を変える
最後の例では、border-spacingに2つの値を指定して、横方向と縦方向で異なるセル間隔を作ります。
ファイル名: Lesson22-7.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>border-spacingの指定</title>
<style>
body {
font-family: sans-serif;
line-height: 1.7;
}
table {
border-collapse: separate;
border-spacing: 12px 6px;
margin: 20px;
}
th,
td {
border: solid 1px #444444;
padding: 8px 16px;
text-align: center;
background-color: #FFFFFF;
}
th {
background-color: #FFF8E1;
}
</style>
</head>
<body>
<h1>セル間隔の指定</h1>
<table>
<tr>
<th>X</th>
<th>Y</th>
<th>Z</th>
</tr>
<tr>
<td>15</td>
<td>25</td>
<td>35</td>
</tr>
</table>
</body>
</html>ブラウザの表示例

このHTMLでは、tableにborder-collapse: separate;を指定しています。そのうえで、border-spacing: 12px 6px;を指定しています。
この指定では、横方向のセル間隔が12px、縦方向のセル間隔が6pxになります。横の隙間を広めに、縦の隙間を少し控えめにすることで、横に並ぶセル同士の区切りが分かりやすくなります。
border-spacingは、collapseではなくseparateのときに使う点が大切です。border-collapse: collapse;が指定されている表では、セル間隔は基本的に詰めて表示されるため、border-spacingの効果は出ません。
表のCSSを使い分ける考え方
表を見やすく整えるには、まずセルの基本スタイルをそろえます。thとtdにborder、padding、text-align、vertical-alignを指定すると、表全体の見た目が安定します。
そのうえで、見出しセルだけ背景色を変えたり、数値のセルだけ右揃えにしたりすると、情報の意味が伝わりやすくなります。すべてのセルを同じ見た目にするより、役割ごとに少し変化を付けるほうが読みやすい表になります。
captionは、表が何を表しているのかを伝える大切な要素です。表のタイトルとして使う場合は上部に配置し、更新日や注記のような補足情報として使う場合はcaption-side: bottom;で下部に配置すると自然です。
border-collapseは、表全体の印象を決める重要なCSSです。collapseを使うと、きっちりした一覧表になります。separateを使うと、セル同士に隙間を持たせた、少しゆとりのある表になります。separateを使う場合は、border-spacingでセル間隔を調整できます。
表に使う主なCSSの整理
ここで扱った表のCSSを整理しておきます。
| CSS | 用途 |
|---|---|
| border | セルの枠線を指定する |
| width | セルや表の横幅を指定する |
| height | セルの高さを指定する |
| padding | セル内の余白を指定する |
| text-align | セル内の文字や画像を横方向に揃える |
| vertical-align | セル内の内容を縦方向に揃える |
| background-color | 見出しや特定セルの背景色を指定する |
| caption-side | captionを表の上または下に配置する |
| border-collapse | セルの枠線を共有するか分離するかを指定する |
| border-spacing | separate時のセル間隔を指定する |
表は、データを分かりやすく伝えるための要素です。CSSを使って見た目を整えるときも、装飾を増やすことより、読みやすさを高めることを意識するとよいでしょう。
使用タグ一覧と解説
この学習で登場した主なHTMLタグを整理します。
| タグ | 用途 |
|---|---|
| html | HTML文書全体を表す |
| head | 文字コードやタイトルなどの情報を書く |
| meta | 文字コードを指定する |
| title | ブラウザのタブに表示されるタイトルを指定する |
| style | HTML内にCSSを書く |
| body | ブラウザに表示される内容を書く |
| h1 | ページの大きな見出しを表す |
| table | 表全体を作る |
| caption | 表のタイトルや説明を付ける |
| tr | 表の行を作る |
| th | 見出しセルを作る |
| td | 通常のデータセルを作る |
tableは表全体を作るタグです。trで行を作り、その中にthやtdを入れてセルを作ります。thは見出しセル、tdは通常のデータセルです。captionは表のタイトルや補足説明を付けるために使います。
CSSでは、thとtdをまとめて指定することで、セル全体の見た目をそろえられます。さらに、thだけ、td.stockだけ、table captionだけのように対象を絞ることで、見出し、特定セル、キャプションを個別に整えることができます。
表を作るときは、HTMLで正しく構造を作り、CSSで読みやすく整えることが大切です。セルの枠線、余白、文字揃え、背景色、キャプション位置、セル間隔を調整できるようになると、シンプルな表から実用的な一覧表まで作れるようになります。
