HTML・情報を整理する

表をつくろう

行と列で情報をきれいに整理する「表」。パーツは少し多いけれど、仕組みはとてもシンプル。組み立て方をつかもう。

時間割、料金表、メニュー——縦と横に情報がならぶとき、いちばん見やすいのが表(テーブル)です。パーツが少し多いので身構えるかもしれませんが、だいじょうぶ。「箱を組み合わせるだけ」です。

まずは小さな表から

2行2列の、いちばん小さな表を作ってみます。

<table>
  <tr>
    <td>りんご</td>
    <td>150円</td>
  </tr>
  <tr>
    <td>みかん</td>
    <td>100円</td>
  </tr>
</table>

読み解くと、こうです。

タグ意味
<table>表全体の“いれもの”
<tr>table row、横一列の“いれもの”
<td>table data、ひとマスの中身

「表 → 行 → マス」と、だんだん小さくなる入れ子。まずはこの順番だけ押さえましょう。

線や色がなくても、りんごとみかんの行が2列にそろって並んでいるのが分かります。

見出しのマスはth

いちばん上の行を「品名/値段」のような見出しにすると、ぐっと読みやすくなります。見出しのマスには、<td> の代わりに <th>(table header)を使います。

<table>
  <tr>
    <th>品名</th>
    <th>値段</th>
  </tr>
  <tr>
    <td>りんご</td>
    <td>150円</td>
  </tr>
</table>

<th> で書いたマスは、多くのブラウザで太字&中央ぞろえになり、「ここは見出しだよ」と伝わります。実際の表示がこちら。

線がなくて地味なのは、これで正常です(枠線や色はCSSの仕事)。それでも<th>の行だけ太字&中央ぞろえになっているのが分かります。
CSS枠線で囲ってみる表の枠線を引くのはCSSのborder。線の引き方はこちらのレッスンで

表に題名をつける(caption)

「この表は何の表か」をひとことで示すのが <caption>。表専用の題名タグで、<table> を開いたすぐ次の行に書きます。

<table>
  <caption>くだものの値段</caption>
  <tr>
    <th>品名</th>
    <th>値段</th>
  </tr>
  <tr>
    <td>りんご</td>
    <td>150円</td>
  </tr>
</table>

見出しタグ(<h2> など)を表の上に置くのと似ていますが、<caption>表とひとつながりとして扱われるのがちがい。読み上げソフトにも「これは“くだものの値段”の表です」と伝わるので、表の意味がぐっと分かりやすくなります。

<caption> は表とひとつながりで表示され、表の上に題名が出るのが分かります。

マスをよこ長にする(colspan)

「2月の予定」のように、1つのマスで2列分を占めたいときは、colspan="2" をつけます。

<tr>
  <th colspan="2">2月の予定</th>
</tr>
<tr>
  <td>1日</td>
  <td>おやすみ</td>
</tr>

colspan="2" をつけたマスは、となりのマスとくっついて横2つ分に広がります。

見出しのマスだけが、下の行の2マス分の横はばに広がっているのが分かります。

縦にくっつけたいときは rowspan。たとえば「午前」というマスを縦2行分にしたければ、こうです。

<tr>
  <th rowspan="2">午前</th>
  <td>こくご</td>
</tr>
<tr>
  <td>さんすう</td>
</tr>

「午前」のマスが縦にのびて、こくご・さんすうの2行にまたがります。2行目に「午前」のマスを書いていないのがポイント——上の行からのびてきたマスが、その場所をすでに使っているからです。

「午前」のマスが縦にのびて、こくご・さんすうの2行にまたがっているのが分かります。

よくある間違いと直し方

表は入れ子が深いぶん、書き間違いも起きやすいタグです。代表的なつまずきを知っておきましょう。

<td><table> に直接書いてしまう。 マスは必ず <tr>(行)の中に入れます。行の“いれもの”を飛ばすと、ブラウザが表として組み立てられず、文字だけがぽろっと表の外に出てしまうことがあります。

閉じタグを忘れる。 </td> </tr> </table> のどれかを閉じ忘れると、そこから先の行がずれたり、表のあとの文章まで巻きこまれたりします。表を書くときは「開けたら閉じる」を1セットずつ確かめながら進めるのが安全です。

<th><td> を見た目で選んでしまう。 「太字にしたいから <th>」は間違いのもと。<th>見出しの意味を持つマス専用です。太字にしたいだけなら、あとで学ぶCSSでいくらでも変えられます。

このレッスンのまとめ

  1. 表は <table>(全体)→ <tr>(行)→ <td>(マス)の入れ子で作る
  2. 見出しのマスは <td> ではなく <th>、表の題名は <caption>
  3. どの行もマスの数をそろえるとガタつかない(colspan・rowspanのぶんも数える)
  4. 枠線や色はCSSの仕事。表はデータのならびのために使う

やってみよう

今回学んだ「表」は、しまちゃんのページには 使いません。時間割や料金表のように、縦横にならぶ情報を見せたいページのための道具です。覚えておいて、必要になったら使いましょう。

よくある質問

表の枠線はどうやって出しますか?
HTMLだけでは線は出ません。見た目はCSSの担当で、borderという指定で線を引きます。まずはHTMLで行とマスの構造を正しく組むことに集中しましょう。
thはいちばん上の行にしか使えませんか?
いいえ。見出しの役割をするマスならどこでも使えます。時間割の「月・火・水」(上の行)と「1時間目・2時間目」(左の列)のように、上と左の両方をthにする表もよくあります。
行によってマスの数が違うとどうなりますか?
表がガタガタにずれて表示されます。どの行もマスの数をそろえるのが基本で、colspanやrowspanで広げたときは、広げたぶんだけマスを減らして数を合わせます。