テーブル デザイン見本
HTML の <table> 要素と CSS を組み合わせた表スタイルの実装デモ。ボタンで見た目の違いをリアルタイムで確認しながら、コピーしてすぐに使えるコードを掲載しています。
① border-collapse — セルのボーダーを結合・分離する
| 月 | 売上 | 経費 | 利益 |
|---|---|---|---|
| 4月 | 50,000 | 40,000 | 10,000 |
| 5月 | 80,000 | 65,000 | 15,000 |
| 6月 | 40,000 | 32,000 | 8,000 |
| 7月 | 60,000 | 45,000 | 15,000 |
現在: border-collapse: collapse
<table>
<thead>
<tr>
<th>月</th>
<th>売上</th>
<th>経費</th>
<th>利益</th>
</tr>
</thead>
<tbody>
<tr><td>4月</td><td>50,000</td><td>40,000</td><td>10,000</td></tr>
<tr><td>5月</td><td>80,000</td><td>65,000</td><td>15,000</td></tr>
<tr><td>6月</td><td>40,000</td><td>32,000</td><td>8,000</td></tr>
<tr><td>7月</td><td>60,000</td><td>45,000</td><td>15,000</td></tr>
</tbody>
</table>
table {
border-collapse: collapse;
}
th, td {
border: 1px solid #64748b;
padding: 8px 14px;
text-align: center;
}
デフォルト値は separate(各セルのボーダーが独立して描画されるため二重線になる)。collapse を指定すると隣り合うセルのボーダーが1本に統合され、すっきりした表になります。実務ではほぼすべてのケースで collapse を使うのが一般的です。
② ヘッダースタイル — 罫線 / 太い区切り / カラーヘッダー
| 月 | 売上 | 経費 | 利益 |
|---|---|---|---|
| 4月 | 50,000 | 40,000 | 10,000 |
| 5月 | 80,000 | 65,000 | 15,000 |
| 6月 | 40,000 | 32,000 | 8,000 |
| 7月 | 60,000 | 45,000 | 15,000 |
現在: 罫線のみ
<table>
<thead>
<tr>
<th>月</th>
<th>売上</th>
<th>経費</th>
<th>利益</th>
</tr>
</thead>
<tbody>
<tr><td>4月</td><td>50,000</td><td>40,000</td><td>10,000</td></tr>
<tr><td>5月</td><td>80,000</td><td>65,000</td><td>15,000</td></tr>
<tr><td>6月</td><td>40,000</td><td>32,000</td><td>8,000</td></tr>
<tr><td>7月</td><td>60,000</td><td>45,000</td><td>15,000</td></tr>
</tbody>
</table>
table {
border-collapse: collapse;
}
th, td {
border: 1px solid #475569;
padding: 8px 14px;
text-align: center;
}
<thead> と <tbody> を使い分けると、CSS でヘッダー行だけにスタイルを当てやすくなります。「太い区切り線」は thead に border-bottom を指定するだけでヘッダーと本文の境界を強調でき、スタイリッシュな表が簡単に作れます。
③ ストライプ — :nth-child で交互に背景色を付ける
| 月 | 売上 | 経費 | 利益 |
|---|---|---|---|
| 4月 | 50,000 | 40,000 | 10,000 |
| 5月 | 80,000 | 65,000 | 15,000 |
| 6月 | 40,000 | 32,000 | 8,000 |
| 7月 | 60,000 | 45,000 | 15,000 |
現在: 奇数行 (odd) に背景色
<table>
<thead>
<tr>
<th>月</th>
<th>売上</th>
<th>経費</th>
<th>利益</th>
</tr>
</thead>
<tbody>
<tr><td>4月</td><td>50,000</td><td>40,000</td><td>10,000</td></tr>
<tr><td>5月</td><td>80,000</td><td>65,000</td><td>15,000</td></tr>
<tr><td>6月</td><td>40,000</td><td>32,000</td><td>8,000</td></tr>
<tr><td>7月</td><td>60,000</td><td>45,000</td><td>15,000</td></tr>
</tbody>
</table>
table {
border-collapse: collapse;
width: 100%;
}
thead th {
background-color: #1e293b;
color: #fff;
padding: 8px 14px;
text-align: center;
}
tbody td {
padding: 8px 14px;
text-align: center;
}
tbody tr:nth-child(odd) {
background-color: #dbeafe;
}
tbody の tr に :nth-child(odd) を指定すると奇数行(1・3・5…行目)に、even を指定すると偶数行に背景色が付きます。行数が多い表では縞模様にするだけで視認性が大幅に上がります。thead の th には別途スタイルを設定することでヘッダー行と本文を明確に区別できます。
④ ヘッダーなしテーブル — <tbody> のみで構成する
| 4月 | 50,000 | 40,000 | 10,000 |
| 5月 | 80,000 | 65,000 | 15,000 |
| 6月 | 40,000 | 32,000 | 8,000 |
| 7月 | 60,000 | 45,000 | 15,000 |
現在: 罫線スタイル
<table>
<tbody>
<tr><td>4月</td><td>50,000</td><td>40,000</td><td>10,000</td></tr>
<tr><td>5月</td><td>80,000</td><td>65,000</td><td>15,000</td></tr>
<tr><td>6月</td><td>40,000</td><td>32,000</td><td>8,000</td></tr>
<tr><td>7月</td><td>60,000</td><td>45,000</td><td>15,000</td></tr>
</tbody>
</table>
table {
border-collapse: collapse;
}
td {
border: 1px solid #475569;
padding: 8px 14px;
text-align: center;
}
<thead> を省いて <tbody> だけにすると、すべての行が同じスタイルになるシンプルなヘッダーなし表を作れます。CSS のスタイルは th ではなく td のみに指定します。名簿・住所録など、全行が同じ種類のデータを並べる場合に向いています。
⑤ レスポンシブ対応 — overflow-x: auto でスマホに対応
| 月 | 売上(円) | 経費(円) | 利益(円) | 前月比 | 備考 |
|---|---|---|---|---|---|
| 4月 | 50,000 | 40,000 | 10,000 | — | 開始月 |
| 5月 | 80,000 | 65,000 | 15,000 | +50% | 好調 |
| 6月 | 40,000 | 32,000 | 8,000 | -47% | 低調 |
| 7月 | 60,000 | 45,000 | 15,000 | +88% | 回復 |
現在: overflow-x: auto(横スクロール可能)
<div class="table-wrapper">
<table>
<thead>
<tr>
<th>月</th>
<th>売上(円)</th>
<th>経費(円)</th>
<th>利益(円)</th>
<th>前月比</th>
<th>備考</th>
</tr>
</thead>
<tbody>
<tr><td>4月</td><td>50,000</td><td>40,000</td><td>10,000</td><td>—</td><td>開始月</td></tr>
<tr><td>5月</td><td>80,000</td><td>65,000</td><td>15,000</td><td>+50%</td><td>好調</td></tr>
<tr><td>6月</td><td>40,000</td><td>32,000</td><td>8,000</td><td>-47%</td><td>低調</td></tr>
<tr><td>7月</td><td>60,000</td><td>45,000</td><td>15,000</td><td>+88%</td><td>回復</td></tr>
</tbody>
</table>
</div>
.table-wrapper {
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
table {
border-collapse: collapse;
white-space: nowrap;
}
th {
background-color: #2563eb;
color: #fff;
padding: 8px 14px;
text-align: center;
}
td {
border: 1px solid #cbd5e1;
padding: 8px 14px;
text-align: center;
}
列数が多い表はスマホ幅で崩れがちです。table を div でラップし、div に overflow-x: auto を指定すると、表が狭い画面でも横スクロールで閲覧できます。table 自体に white-space: nowrap を追加するとセル内でのテキスト折り返しを防ぎ、レイアウトが崩れにくくなります。
当サイトで公開しているWebデザインやUIの実装例は、一覧として以下記事に纏めています。

