<table>要素
Technical Summary
table要素は、複数の次元を持つデータをtableとして表し、子孫の行・列・セルによるtable modelに参加します。行と列はgridを形成し、セルはそのgridを重複なく覆う必要があります。
tableはデータの関係を表す要素であり、ページレイアウトのための汎用コンテナではありません。レイアウトにはCSSのGridやFlexboxなどを使用します。
Definition / Content model
| 位置 | 要素 | 意味 | 条件 |
|---|---|---|---|
| 1 | caption | 表の説明 | 任意。最初に置く |
| 2 | colgroup | 列のグループ | 0個以上 |
| 3 | thead | 見出し行のグループ | 任意 |
| 4 | tbody または tr | 表本体 | tbodyは0個以上、またはtrを1個以上 |
| 5 | tfoot | フッター行のグループ | 任意 |
tableのcontent modelはこの順序を持ち、scriptなどのscript-supporting elementは規定された位置に混在できます。tableの開始タグと終了タグは省略できません。
Table model
table modelは、HTMLソースの見た目をそのまま写したものではありません。行と列がgridを形成し、セルはそのgrid上のslotを占有します。
source markup
↓ rows / columns / cells
table grid
↓ cell slots and spanning relationships
table model
- Grid行と列が二次元のgridを形成する
- Cellsセルはgridを覆い、セル同士が重複しないように構成する
- Span
rowspan・colspanを含む全分岐は別途詳細確認が必要
Header / Data cell relationships
| Markup | Role | Relationship | Use |
|---|---|---|---|
th scope="col" | Column header | 後続セルの列を説明する | 料金・日付・項目名など |
th scope="row" | Row header | 同じ行のデータを説明する | 曜日・商品名・地域など |
td | Data cell | 見出しが示すデータを持つ | 値・状態・説明など |
id + headers | Explicit association | 複雑な表で見出しを明示的に関連付ける | 多段見出し・複数軸の表 |
見出し関係は、文字の太さや罫線ではなく構造として表現します。単純な表ではscopeが読み取りやすい入口になります。複雑な表では、構造の単純化を優先しつつ、必要に応じてidとheadersで関係を明示します。
Parser recovery boundary
HTML parserは、ソースの入れ子を単純にDOMへコピーするだけではありません。例えば、tbodyの直下にtdを置くソースはparse errorになります。このtable-body contextでは、tree builderが暗黙のtrを挿入してからtd tokenを再処理するrecovery branchがあります。
<table>
<tbody>
<td>source cell</td>
</tbody>
</table>
possible DOM shape after recovery:
table → tbody → tr → td
したがって、source markupの文字列上の親子関係と、parser後のDOM treeを同一視してはいけません。適合性の判断と、ブラウザーがrecoveryした結果の観測は別の確認対象です。
DOM interface
table要素はHTMLTableElement interfaceとして扱われます。caption、tHead、tFoot、tBodies、rowsなどのgetterや、createTBody()、insertRow()などの操作が定義されています。
const table = document.querySelector('table');
table.caption;
table.tBodies;
table.rows;
table.insertRow(-1);
DOM APIの結果は、HTMLソースをどう記述したかだけでなく、parserが構築したDOM treeと、実行時に行った操作の状態に依存します。
Fact / Evidence(主張 / 根拠)
主要Factを、適用条件・確認状態・仕様上の根拠位置と対応付けています。未完了の範囲は下のCoverage / Open Issuesに残しています。
| 種別 | Fact / 主張 | 条件・範囲 | 状態 | 根拠 |
|---|---|---|---|---|
| SPEC | table要素はデータの関係を表し、ページレイアウトの汎用コンテナではありません。 | 行・列のデータにはtable、ページレイアウトにはCSSの仕組みを使う場合。 | 確認済み | HTML Standard: the table element |
| SPEC | tableのcontent modelは、caption、colgroup、thead、表本体、tfootの順です。 | 表本体は0個以上のtbody、または1個以上のtrで構成します。 | 確認済み | HTML Standard: the table element |
| SPEC | 行・列・セルがtable gridを形成し、セルはslotを重複なく覆います。 | rowspan・colspanはgridに影響するため、分岐ごとの確認が必要です。 | 確認済み | HTML Standard: forming a table |
| SPEC | thと見出し関係が、単純な表または複雑な表のデータセルを説明します。 | 単純な行・列見出しにはscope、明示的な関連付けにはidとheadersを使う場合。 | 確認済み | HTML Standard: header and data-cell semantics |
| SPEC | table-body contextでtdが直接現れると、parserが暗黙のtrを挿入することがあります。 | parse errorからのrecovery経路であり、ソースの親子関係と構築後のDOMを分けて確認する場合。 | 確認済み | HTML Standard: in table body |
Evidence
- HTML Standard: The table element — 意味、content model、table model、layout tableとの境界、DOM interface
- HTML Standard: Forming a table — table grid、rows、columns、cells、slotの形成
- HTML Standard: Header and data cell semantics — 見出しセルとデータセルの関係
- HTML Standard: The "in table body" insertion mode — table contextのtoken処理とrecovery境界
- HTML Accessibility API Mappings: table — platform accessibility mappingの確認入口
Implementation Evidence
仕様上の主張とは別に、ブラウザー実装・WPT・アクセシビリティ観測を記録します。未実施の項目は確認済みとは扱いません。
共通fixture / 実行環境: tbodyを省略したtableにscope付きの見出し、rowspan="2"、headersを配置。Chrome 152.0.0.0 / Windows NT 10.0 / 確認日 2026-09-13。
| 種別 | 再現確認の範囲 | 記録する条件 | 状態 |
|---|---|---|---|
| IMPL | parser recovery、table grid、rowspan/colspan、header関係の構築後DOM | Chrome 152.0.0.0 / Windows NT 10.0 / 2026-09-13。省略したtbodyが暗黙に1つ挿入され、行3・rowspan=2・colspan=1を確認。thのscope(col/row)とtd[headers]="h1 r1"も保持 | 確認済み |
| WPT | table parsing、grid形成、header associationに関係するテストとの対応 | foster-parenting-moved-table.window.js、rowspan-0.html、col-span-limits.html、cells.htmlを対応付け。2026-09-15 / Chrome 152.0.0.0 / Windows NT 10.0 / wpt.liveでrowspan・cellsは3/3 pass、col-spanは3/5 pass(2件は期待幅とChromium実測幅が不一致)、foster-parenting-moved-table.window.jsは実行器により開けず未実施 | 部分実行(6/8 pass) |
| AAM | table、row、column、header関係のアクセシビリティツリー観測 | Chrome 152.0.0.0 / Windows NT 10.0 / 2026-09-13。AX treeでtable、row、cellの階層とセル名を観測。今回のChromium treeではthが独立したcolumnheader / rowheader roleではなくcellとして表示されたため、完全なheader mappingは未主張 | 観測済み |
WPTの対応付けにはWPTリポジトリ、アクセシビリティの基準にはHTML-AAMを参照します。
Coverage / Open Issues
- Reviewed要素の意味、content model、table gridの基本、単純なheader/data関係、HTMLTableElementの主要surface
- Reviewedtable-body contextにおける暗黙の行挿入というparser recoveryの境界
- Openrowspan・colspan、table modelの全アルゴリズム分岐、複雑なheader associationの完全な追跡
- Open今回のAX観測はChrome 1環境のみ。HTML-AAMの全mapping、支援技術ごとの観測、ブラウザー差、WPT、歴史的変更は未登録
- OpenCSS table layoutとHTML table modelの実装境界、互換性、Expert-gap Review
このページは初期Coverageです。ここで確認した範囲が、table要素に関する全事実の検証完了や、すべての実装で同一結果になることを意味しません。
Related surface
表を初めて作るときの最小例、見出し、レスポンシブ対応はYugienのtable要素ページで説明しています。