今回は、HTMLでテーブルを作成する方法を解説します。
CSSでテーブルの見た目を整える方法も解説します。
テーブル(表)の作り方
index.htmlを以下のように書き換えてください。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>テーブル要素</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<table class="price">
<tr>
<th>料金</th><td>500円</td><td>1,200円</td>
</tr>
<tr>
<th>サービスの利用</th><td>◯</td><td>◯</td>
</tr>
<tr>
<th>サポート</th><td>×</td><td>◯</td>
</tr>
</table>
</body>
</html>
保存してブラウザを確認すると、テーブルが表示されます。
テーブル(表)はtable
タグ、行はtr
タグ、セルはtd
タグ、見出しのセルはth
タグで作成します。
セルを結合していない場合は、各行に入るセルの数は同じにしてください。結合の方法は後ほど解説します。
このままでは見づらいのでCSSで枠線を追加します。
style.cssの中身を全て削除し、次のコードを書いてください。
@charset "utf-8";
.price td,
.price th {
padding: 6px;
border: 1px solid #ccc;
}
これで各セルに枠線と余白が入りました。
各セルの間に隙間が入っているので、隙間をなくしてみます。
@charset "utf-8";
.price {
border-collapse: collapse;
}
.price td,
.price th {
padding: 6px;
border: 1px solid #ccc;
}
テーブルにborder-collapse: collapse;
を指定すると、セル同士の隙間がなくなります。
border-collapse
の初期値はseparate
で、separate
の場合は隙間ができます。
thead、tbody、tfoot
次に、見出しの行を定義するthead、テーブルの最後に総括の行を定義するtfootを使ってみましょう。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>テーブル要素</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<table class="price">
<thead>
<tr>
<th></th>
<th>プランA</th>
<th>プランB</th>
</tr>
</thead>
<tbody>
<tr>
<th>月額料金</th>
<td>10,000円</td>
<td>20,000円</td>
</tr>
<tr>
<th>入会金</th>
<td>10,000円</td>
<td>10,000円</td>
</tr>
</tbody>
<tfoot>
<tr>
<th>初期費用総額</th>
<td>20,000円</td>
<td>30,000円</td>
</tr>
</tfoot>
</table>
</body>
</html>
theadやtfootがある場合、それ以外はtbodyで囲む必要があります。theadやtfootがない場合は、tbodyは省略できます。
見出しと総括が分かりやすいように、CSSを追加してみます。
@charset "utf-8";
.price {
border-collapse: collapse;
}
.price thead {
background-color: #eee;
}
.price tfoot {
background-color: #eee;
}
.price td,
.price th {
padding: 6px;
border: 1px solid #ccc;
}
これで分かりやすくなりました。
セルの結合
エクセルのように、セルを結合することができます。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>テーブル要素</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<table class="price">
<thead>
<tr>
<th></th>
<th>プランA</th>
<th>プランB</th>
</tr>
</thead>
<tbody>
<tr>
<th>月額料金</th>
<td>10,000円</td>
<td>20,000円</td>
</tr>
<tr>
<th>入会金</th>
<td colspan="2">10,000円</td>
</tr>
</tbody>
<tfoot>
<tr>
<th>初期費用総額</th>
<td>20,000円</td>
<td>30,000円</td>
</tr>
</tfoot>
</table>
</body>
</html>
colspanで横方向にセルを結合できます。colspan="2"
でセル2つ分結合しています。
<td colspan="2">10,000円</td>
でセル2つ分になるので、この行のtdを1つ減らします。
テキストが左寄りで見づらいので、テーブルのテキストを中央寄せにします。
.price {
border-collapse: collapse;
text-align: center;
}
これで見やすくなりました。
次に、縦方向の結合をしていきます。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>テーブル要素</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<table class="price">
<thead>
<tr>
<th></th>
<th>プランA</th>
<th>プランB</th>
</tr>
</thead>
<tbody>
<tr>
<th>月額料金</th>
<td rowspan="2">10,000円</td>
<td>20,000円</td>
</tr>
<tr>
<th>入会金</th>
<td>10,000円</td>
</tr>
</tbody>
<tfoot>
<tr>
<th>初期費用総額</th>
<td>20,000円</td>
<td>30,000円</td>
</tr>
</tfoot>
</table>
</body>
</html>
rowspan
で縦方向の結合ができます。rowspan="2"
を指定した次の行は、セルが1つ少なくなります。
<tbody>
<tr>
<th>月額料金</th>
<td rowspan="2">10,000円</td>
<td>20,000円</td>
</tr>
<tr>
<th>入会金</th>
<!-- ここにあったセルが上のセルと結合されている -->
<td>10,000円</td>
</tr>
</tbody>
rowspan="3"
の場合は、下の行2つでセルの数を減らします。
<tbody>
<tr>
<th>月額料金</th>
<td rowspan="3">10,000円</td>
<td>20,000円</td>
</tr>
<tr>
<th>入会金</th>
<!-- ここにあったセルが上のセルと結合されている -->
<td>10,000円</td>
</tr>
<tr>
<th>事務手数料</th>
<!-- ここにあったセルが上のセルと結合されている -->
<td>10,000円</td>
</tr>
</tbody>