【HTML基礎講座 第6回】テーブル(表)の作成:複雑なデータを整理するセルの結合

HTML基礎講座 全10回(第6回)

テーブル(表)の作成:複雑なデータを整理するセルの結合

第6回では、料金表やスケジュール表などの作成に不可欠な「テーブル(表)要素」を学びます。基本的な表組みから、縦・横のセルを自在に結合させる実践的なマークアップ方法までを網羅します。

📌 講座ロードマップ一覧(クリックで移動)

1. テーブルを構成する4つの基本タグ

HTMLで表(テーブル)を作成するには、複数のタグを入れ子にして組み合わせる必要があります。最も基本的な構成要素は以下の4つです。

  • <table>: 表全体のコンテナ。
  • <tr> (Table Row): 表の「行」を定義します。
  • <th> (Table Header): 表の「見出しセル」。太字かつ中央揃えで表示されるのが一般的です。
  • <td> (Table Data): 表の「データ(値)セル」。通常テキストで表示されます。
HTMLコード
<table>
    <tr>
        <th>商品名</th>
        <th>価格</th>
    </tr>
    <tr>
        <td>リンゴ</td>
        <td>150円</td>
    </tr>
</table>

2. thead・tbodyによるテーブル構造のグループ化

表が長くなる場合や、より論理的なマークアップを行うために、表のヘッダー部分・ボディ部分・フッター部分を明確にグループ化するタグを使用します。

  • <thead>: 見出し行(見出しとなるtr)をまとめます。
  • <tbody>: データのメインコンテンツ(データとなるtr)をまとめます。
  • <tfoot>: 合計値など、表の最下部の行(tr)をまとめます。

これらを使用することで、CSSでのスタイリングが容易になるだけでなく、スクリーンリーダーなどのクローラーに対しても表の構造を正しく伝えることができます。

3. セルを結合する:colspanとrowspan

エクセルと同じように、HTMLの表でも縦や横の複数のセルを1つに繋ぎ合わせる(結合する)ことができます。

セルの縦横結合(colspan・rowspan)のイメージ図 図:colspan(横結合)と rowspan(縦結合)の仕組み

↔️ 横方向の結合:colspan 属性

`colspan=”数字”` を `th` または `td` タグに指定すると、指定した数だけの「列(横方向)」を結合します。

<td colspan="2">2つの列を横に結合したセル</td>

↕️ 縦方向の結合:rowspan 属性

`rowspan=”数字”` を指定すると、指定した数だけの「行(縦方向)」を結合します。

<td rowspan="3">3つの行を縦に結合したセル</td>

⚠️ セル結合時の最大の間違い:辻褄合わせ

セルを結合する場合、「結合によって吸い込まれたセル」をHTMLから物理的に削除する必要があります。
例えば、左のセルに `colspan=”2″` を指定した場合、その右隣に配置される予定だった `` タグを1つ削除しなければ、その行全体のセルの数が合わなくなり、表の右側にはみ出しが発生して表示が崩れます。

4. 結合を駆使した料金表の実装コード

縦結合(rowspan)と横結合(colspan)を組み合わせた、実践的なプラン比較表のコードです。

プラン名 月額料金 おすすめ対象
ライト 1,000円 個人利用
スタンダード 3,000円
ビジネス 要お問い合わせ(企業向け)
table-sample.html
<table>
    <thead>
        <tr>
            <th>プラン名</th>
            <th>月額料金</th>
            <th>おすすめ対象</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>ライト</td>
            <td>1,000円</td>
            <!-- 次の行のセルと縦に結合(2行分) -->
            <td rowspan="2">個人利用</td>
        </tr>
        <tr>
            <td>スタンダード</td>
            <td>3,000円</td>
            <!-- この行の3列目(個人利用)は上のセルに吸収されたため記述しない -->
        </tr>
        <tr>
            <td>ビジネス</td>
            <!-- 右隣のセルと横に結合(2列分) -->
            <td colspan="2">要お問い合わせ(企業向け)</td>
            <!-- この行の3列目は横に結合したため記述しない -->
        </tr>
    </tbody>
</table>
✍️ 第6回 理解度チェック(問題)

1つのセルを「横方向に3列分」繋げたい場合に、tdタグに指定すべき属性値は何でしょうか?

※この問題の解答と解説は、ページ最下部(まとめの前)に掲載しています。

5. まとめと次回予告

セルの縦横結合(colspan/rowspan)はパズルに近く、最初のうちはコード上のセルの個数を数えるミスが発生しやすいですが、慣れれば極めて直感的かつ綺麗な表が書けるようになります。

次回(第7回)は、「ユーザーからテキスト入力を受け取る お問い合わせフォームの基本」をテーマに、formタグ、inputタグ、各種送信パーツの組み方を学習します!

🔑 第6回 理解度チェックの解答と解説

【解説】

正解は `colspan=”3″` です。column span(列の範囲)を表す `colspan` 属性に結合させたいセル数を指定します。縦方向は `rowspan` を用います。