Menu

HTML の colspan と rowspan: テーブルのセルを結合する方法

colspan で列方向に、rowspan で行方向にテーブルのセルを結合します。表が崩れないようにセルを数える方法、グループ化した見出しの作り方、結合した表をスクリーンリーダーでも読みやすく保つ方法を解説します。

このページのコードはエディタで実行できます - 編集してすぐに結果を確認できます。

colspan: 1 つのセルで複数の列をまたぐ

colspan="n" を指定すると、セルの幅が n 列分になります。そのセルがある行は、セルが n - 1 個少なくなります。ここでは合計のセルが最初の 2 列をまたいでいます。

最後の行のセルは 2 つですが、最初のセルが 2 つ分に数えられるので、ほかの行と同じく合計 3 列になります。

rowspan: 1 つのセルで複数の行をまたぐ

rowspan="n" を指定すると、セルの高さが n 行分になります。縦長のセルがすでにその列を埋めているので、下の行ではその列を省きます。

Bob と Cy の行には <td> が 1 つしかありません。Team の列はすでに「Design」が占めているからです。HTML にはそれを示す印がないので、rowspan のある表は上から下へ読み、どの列がまだ覆われているかを数えながら読みましょう。

colspan と rowspan を組み合わせる: 時間割

1 つのセルで両方向にまたがることもできます。典型的な例が時間割で、2 コマ続く授業や 2 日にまたがる授業があります。

10:00 の行を数えてみましょう。時刻の見出し、次に Mon は上の行の HTML に覆われていて、Lab が Tue と Wed を埋めます。11:00 では Mon が再び空き、Lab はまだ Tue と Wed を覆っているので、その行のデータセルは 1 つです。

表が崩れないようにセルを数える

各セルの colspan と、上の rowspan のセルに覆われた列を数えに入れて、どの行も同じ列数になるようにします。ある行のセルが 1 つ多いと、ブラウザはそのための列を新しく追加し、表の端がギザギザになります。

間違った表では、2 行目が A に 1 列目を覆われていることを忘れているので、D がほかの行にない 3 列目に入っています。セルを 1 つ消せば直ります。colspan での同じ間違いは、幅の広いセルがある行で元のセルをすべて残してしまうことです。

セルが 1 つ少ない場合は逆の問題で、行が途中で終わり、末尾に穴が空きます。

colspan でまとめた見出し

見出しは、より細かい見出しの行の上で、自分がラベルを付ける列をまたぐことができます。スクリーンリーダーがその下のすべての列に見出しを当てはめられるよう、scope="colgroup" を付けましょう。

「City」は rowspan="2" で 2 行の見出しをまたぎ、各月は colspan="2" で 2 列をまたいでいます。<colgroup> 要素が、scope="colgroup" が参照する列のグループを定義します。これでスクリーンリーダーは Rome の 31 のセルで「Rome、July、High、31」と読み上げられます。テーブルのほかの構造については HTML テーブル を参照してください。

結合は本当の構造にだけ使う

セルを結合した表は、スクリーンリーダーで読みにくくなり、並べ替え、絞り込み、表計算ソフトへのコピーもしにくくなります。データが本当にまとまっている場所 (合計、サブ列の上の見出し、2 時間続く授業) に使いましょう。結合がたくさん必要な表は、単純な表 2 つに分けたほうがわかりやすいことがよくあります。

よくある間違い

  • 覆われたセルを残したままにする。 colspan="2" のセルは 2 つのセルの代わりなので、元のセルを 1 つ消しましょう。
  • rowspan の下の行を忘れる。 その各行でセルを 1 つ減らす必要があります。
  • <tr> に colspan を書く。 <td> と <th> でしか効きません。
  • ページのレイアウト用の表で、横長の見出し行などの見た目のために結合を使う。 レイアウトには CSS grid を使いましょう。
  • 「全幅」のつもりで colspan="100%" と書く。 ブラウザは先頭の数字しか読まないので、このセルは 100 列をまたぎ、表に空の列が追加されます。値は列の数を表す整数です。

よくある質問

HTML の colspan は何をしますか?

colspan は <td> や <th> を複数の列にまたがらせます。<td colspan="3"> は行の中で 3 つのセル分の場所を占めます。その行は、ほかの行よりセルが 2 つ少なくなります。

HTML の rowspan は何をしますか?

rowspan はセルを下方向に複数の行にまたがらせます。<td rowspan="2"> は自分の行とその下の行を埋めます。上のセルがすでにその列を覆っているので、次の行ではその列のセルを省きます。

1 つのセルに colspan と rowspan を同時に使えますか?

使えます。<td colspan="2" rowspan="2"> は 2 列 × 2 行のブロックを覆います。そのセルが通るどの行でも、自分のセルを 2 つ減らす必要があります。

表の右端にセルが 1 つはみ出すのはなぜですか?

結合を数えると、ある行のセルがほかの行より多くなっています。たいていは、rowspan の下の行が覆われた列のセルをまだ書いているか、colspan のある行が元のセルをすべて残しているかです。余分な <td> を消しましょう。

colspan の最大値はいくつですか?

ブラウザは colspan を 1000、rowspan を 65534 に制限しています。colspan の値が 0 のときや数字で始まらないときは 1 として扱われます。

Coddy programming languages illustration

Coddyでコードを学ぼう

始める