要約

コンテンツをグリッド状にレイアウトするには、テーブル要素ではなくCSSスタイルを使用します。

注意

HTML では、レイアウト目的でテーブルを使用することは規格違反になりました。詳細については、よくある質問を参照してください。

テクニック

例1 — レイアウトテーブル

この例では、レイアウトテーブルを使用してリストを並べて配置しています。続く例は、このタイプのマークアップを回避する方法を示しています。

<table role="presentation">
   <tr>
      <td>
         <ul>
            …
         </ul>
      </td>
      <td>
         <ul>
            …
         </ul>
      </td>
   </tr>
</table>
例2 — 代替CSSグリッドレイアウト

この例では、例1のレイアウト用のテーブルがCSSのグリッドスタイルに置き換えられています。grid-template-columnプロパティは、使用可能なスペースの半分を二つの列のそれぞれに割り当てます。

HTML:
<div class="grid">
   <ul>
      …
   </ul>
   <ul>
      …
   </ul>
</div>

CSS:
.grid {
   display: grid;
   grid-template-columns: repeat(2, 1fr);
}
例3 — 代替のCSSのflexによるレイアウト

この例では、例1のレイアウト用のテーブルがCSSのflexによるスタイルに置き換えられています。

HTML:
<div class="flex">
   <ul>
      …
   </ul>
   <ul>
      …
   </ul>
</div>

CSS:
.flex {
   display: flex;
   justify-content: space-evenly;
}
例4 - 代替のCSSのtableによるレイアウト

この例では、例1のレイアウト用のテーブルがCSSのtableスタイルに置き換えられています。ロールpresentationが追加されているのは、支援技術によってテーブルであることを通知しないようにするためです(支援技術はCSSをテーブルのマークアップとして認識する可能性があります)。

HTML:
<div class="table" role="presentation">
   <div class="row">
      <ul class="cell">
         …
      </ul>
      <ul class="cell">
         …
      </ul>
   </div>
</div>

CSS:
.table {
   display: table;
   width: 100vw;
}
.row {
   display: table-row;
}
.cell {
   display: table-cell;
   width: 50vw;
}

よくある質問

レイアウトテーブルの使用が違反になったのはいつですか?

元々、HTML5仕様には競合するものが2つありました。W3C版ではレイアウト用のテーブルを使用しないことを推奨しており、WHATWG版ではその使用を違反としていました。

W3C版のHTMLは現在廃止されており、EPUB3では参照されなくなったため、表形式のデータをレイアウトする場合を除いてテーブルを使用するのは無効となりました。

このように指針が分かれた結果、古い電子出版物にはレイアウト用のテーブルがあるかもしれません。これらのテーブルは、アクセシブルなレイアウトの要件に従う必要があります(つまり、セマンティックタグは使用しません)。

新しいコンテンツではレイアウト用のテーブルは使用できません。

解説

現在は、様々なCSSレイアウトモデルがサポートされているので、純粋に体裁を整える目的でテーブルを使用することは、もはや正当化されません。

現在のHTML仕様では、レイアウト用のテーブル使用は明確に禁止されています。

テーブルをレイアウト補助として使用しないでください。歴史的に、一部のウェブ製作者は、ページレイアウトを制御する方法として HTMLのテーブルを誤用してきました。この使用法は、不適切です。

レイアウトにテーブルを使用することは、支援技術のユーザーにとって常に問題でした。テーブルマークアップの使用は視覚的な読者には透過的ですが、支援技術のユーザーにはテーブル読み取りモードを強いることになります。これらのユーザーがコンテンツを読むためにはセルと行を移動しなければならないことをコンテンツ製作者がほとんど考慮せず、論理的に読みやすいレイアウトを保証していないことがよくありました。支援技術のユーザーはしばしば、レイアウトを論理的にたどるには、列を下に読むか、行を横切って読むかを推測しなければなりませんでした。

注記

epubcheckなどの検証ツールではレイアウト用のテーブルを検出できません。レイアウト用のテーブルが存在するかどうかは手動で検査しなければなりません。

古いコンテンツ

HTML要件の変更前に作成された電子出版物にはレイアウト用のテーブルが含まれている可能性があるため、このコンテンツは適切なアクセシビリティ ガイドラインに従うことが依然として重要です。

レイアウト用のテーブルの場合、テーブルのマークアップにはデータテーブル要素や属性を付けないでください。これらには、theadthcaption要素、およびheaders属性とscope属性(HTML4またはXHTML 1.1ドキュメントを作成する場合はsummary属性も)が含まれます。

レイアウト用のテーブルが、支援技術によって確実に無視されるように、 presentationのロール属性も宣言する必要があります。

関連リンク