HTML講座 / caption・scope・セル結合で読みやすい表を作る

読みやすい表では、captionで表全体の内容を示し、thとscopeで値と見出しの関係を表します。colspanやrowspanによる結合は、データに必要な場合に使い、装飾だけを理由に複雑にしないことが大切です。

captionで表に題名を付ける

captionはtableの最初の要素として置き、表全体が何を示すかを説明します。近くに置いた通常の段落とは異なり、表の構造の一部です。対象期間や数値の測定方法が重要なら、題名や近くの説明にも条件を書きます。個々の行や列の名前は、別にthで示します。

scopeで見出しの方向を示す

列見出しはscope="col"、行見出しはscope="row"とします。例の「Monday」と「Morning」が交わる値は3人です。ここでの数値は構造説明用の架空のデータです。

<table>
  <caption>Visitors by day and time of day</caption>
  <thead>
    <tr>
      <th scope="col">Day</th>
      <th scope="col">Morning</th>
      <th scope="col">Afternoon</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th scope="row">Monday</th>
      <td>3 visitors</td>
      <td>5 visitors</td>
    </tr>
    <tr>
      <th scope="row">Tuesday</th>
      <td>4 visitors</td>
      <td>6 visitors</td>
    </tr>
  </tbody>
</table>

scopeは見出しとデータの関係を表すもので、セルを横へ並べたり色を変えたりする指定ではありません。単純な表では関係を推定できる場合もありますが、明示すると意図を確認しやすくなります。W3C WAIの表の解説に基本パターンがあります。

必要な場合だけセルを結合する

colspan="2"は二列、rowspan="2"は二行をまたぎます。次は午前と午後を共通の見出しでまとめる例です。colgroupで列のグループを定め、scope="colgroup"が何に対応するかを明確にしています。

<table>
  <colgroup><col></colgroup>
  <colgroup span="2"></colgroup>
  <tr>
    <th scope="col" rowspan="2">Day</th>
    <th scope="colgroup" colspan="2">Visitors</th>
  </tr>
  <tr>
    <th scope="col">Morning</th>
    <th scope="col">Afternoon</th>
  </tr>
  <tr>
    <th scope="row">Monday</th>
    <td>3 visitors</td>
    <td>5 visitors</td>
  </tr>
</table>

日付の一列と、午前・午後の二列を分けて考えます。結合されたセルを通常のセル一個として数えると配置を間違えるため、結合が占める行列まで含めて確認してください。基本の行とセルは表の基本、複雑な見出しはW3C WAIの不規則な表見出しを参照できます。

見出しとの対応を点検する

任意の数値を指し、「何曜日のどの時間帯の値か」を答えられるか確認します。色や位置だけで判断させず、見出しとの構造的な対応を持たせます。判断しにくければ表を単純化したり、複数の表へ分けたりします。

狭い画面で内容が欠けないか、複雑な表では読み上げで関係を理解できるかも確認します。操作や読み順の確認はアクセシビリティの基本と組み合わせてください。

같은 카테고리의 다른 글
HTML講座 / divとspanはいつ使うのか

HTML講座 / divとspanはいつ使うのか

divとspanの内容モデルと使い分けを学びます。CSSのdisplayを変えてもHTMLの親子関係の規則は変わらないことや、意味のある要素を優先する基準も説明します。

HTML講座 / detailsとsummaryで開閉できる説明を作る

HTML講座 / detailsとsummaryで開閉できる説明を作る

JavaScriptなしで開閉する補足説明を作ります。open属性の真偽、分かりやすいsummaryの書き方、Tab・Enter・Spaceによる操作の確認方法も紹介します。

HTML講座 / audio・video・iframeでメディアを埋め込む

HTML講座 / audio・video・iframeでメディアを埋め込む

音声、動画、外部文書の埋め込みを学びます。字幕ファイル、代替リンク、画面幅への対応と、ファイル形式や提供元の制限による読み込み失敗の確認方法も説明します。

HTML講座 / placeholderと入力中も残る案内文を付ける

HTML講座 / placeholderと入力中も残る案内文を付ける

label、placeholder、valueの違いを学びます。inputとtextareaの例、aria-describedbyによる説明の関連付け、フォームデータで送られる値の確認方法も紹介します。

HTML講座 / img・alt・画像サイズを指定する

HTML講座 / img・alt・画像サイズを指定する

imgのsrc、alt、width、heightの役割を学びます。画像の配置場所と相対パス、装飾画像の代替テキスト、表示幅とファイル容量の違いも説明します。

HTML講座 / formの構造とGET・POSTによる送信

HTML講座 / formの構造とGET・POSTによる送信

action、method、nameの役割とGET・POSTの違いを学びます。FormDataと開発者ツールを使い、送信対象の値、入力検証、サーバー処理を分けて確認します。

HTML講座 / fieldset・legend・autocompleteでフォームを説明する

HTML講座 / fieldset・legend・autocompleteでフォームを説明する

関連する入力をfieldsetでまとめ、legendで質問を示す方法を学びます。ラジオグループを独立させるnameと、自動入力の目的を示すautocompleteの違いも解説します。

HTML講座 / 複数ページで小さなWebサイトを作る

HTML講座 / 複数ページで小さなWebサイトを作る

ホーム・紹介・問い合わせ練習の三ページを作り、共通メニューと現在位置を設定します。フォームは送信値の確認用とし、相対リンク、入力制約、キーボード、文法を点検します。

HTML講座 / ol・ul・dlと入れ子のリスト

HTML講座 / ol・ul・dlと入れ子のリスト

順序付きリスト、箇条書き、用語と説明のリストを使い分けます。番号の開始位置や逆順表示、リスト項目の中にサブリストを置く正しい構造も学びます。

HTML講座 / required・文字数・範囲で入力値を検証する

HTML講座 / required・文字数・範囲で入力値を検証する

必須入力、文字数、数値の範囲と刻み、メール形式の制約を学びます。境界値を試し、ブラウザーの案内とサーバー側の検証を分けて考える方法も説明します。