HTML / Element / Initial coverage

<td>要素

状態: 初期Coverage 対象: HTML Living Standard 仕様確認日: 2026-10-11

Technical Summary

tdはtable内のdata cellです。行・列の見出しを表すthとは意味が異なります。td、その行と列、colspan・rowspan、見出し関連付けがtable model上のcell位置と関係を構成します。

適合するheadersは同じtable内のth IDを参照します。属性値がDOMに反映されること、仕様上のheader list、ブラウザーのAccessibility tree、支援技術の読み上げは別の確認対象です。

Definition / Content model

td要素の基本定義
項目定義条件・範囲
意味table内のdata cell見出しセルの意味はthが持つ
Contexttr要素の子table cellとしてtable modelに参加する
Content modelFlow content(文章・段落・リストなどの一般的な内容)親・子の要素ごとに置ける条件がある
Categories特定のcontent categoryには分類されないtable cellという意味・役割は別に定義される
終了タグtext/htmlでは条件付きで省略可能直後がtdまたはth、または親要素内に後続contentがない場合
DOM interfaceHTMLTableCellElementth要素も同じinterfaceを使う

終了タグを省略できる場合が仕様にありますが、手書きのHTMLでは明示する方がセルの範囲を追いやすくなります。これは読みやすさのための書き方の選択であり、省略したHTMLが常に不適合という意味ではありません。

このページでいうtable modelは、HTMLが表の行・列・セルの位置と重なりを決める仕組みです。

span属性とheaders

tdの主要属性
属性仕様上の意味IDL・境界
colspancellが横方向に占めるcolumn数colSpanは1〜1000。欠落・無効値のdefaultは1
rowspancellが縦方向に占めるrow数rowSpanは0〜65534。0は同じrow groupの残りの行まで
headers関連するheader cellを示すID token列space-separated unique tokens。各tokenは同じtableのth IDを指す

colspanは正の整数で最大1000、rowspanは0以上65534以下です。属性がない場合や不正な値の場合、JavaScriptからDOMプロパティを変更した場合の扱いにも範囲が定められています。rowspan="0"は0行という意味ではなく、同じrow group(行のまとまり)の残りの行に広がります。

spanは表の格子上でcellの占める位置を変えます。ほかのcellと同じ位置を重ねて使う構造はtable model error(表の位置関係のエラー)です。HTML parserがDOMを構築したことだけで、入力markupの適合性や表の位置関係の正しさが保証されるわけではありません。

headersは単なるテキスト属性以上のtable relationshipとして仕様で処理されます。適合markupでは同じtableのthを指し、cell自身を見出しとして参照しません。属性値をDOMから読めることだけでは、browser / platform accessibility APIが同じ関係をどう公開するかは確定しません。

JavaScript DOM propertiesとcellIndex

HTMLTableCellElementはJavaScriptからcellを扱うinterface(操作用の窓口)で、colSpan、rowSpan、headersのpropertyを提供します。scopeとabbrも共通interfaceにありますが、HTML属性として適合するのはthです。

cellIndexは親のtrが持つcells list内の位置です。前のcellが複数行・複数列に広がっていると、この番号は表の格子上の横位置と一致しません。trに属さない要素では-1を返します。

const cell = document.querySelector("td");
cell.cellIndex;  // 親のtr内のcell listでの位置
cell.colSpan;    // colspanのIDL値
cell.rowSpan;    // rowspanのIDL値

Fact / Evidence(主張 / 根拠)

標準の定義、Accessibility mapping、ブラウザーで観測した結果を分けて記録します。選定したfixtureやWPTの結果は、全実装・全表構造の一般的な保証ではありません。

tdの主要Factと根拠位置
種別Fact / 主張条件・範囲状態根拠
SPECtdはtableのdata cellを表し、trの子としてFlow contentを持つ。要素の意味、context、content model。確認済みHTML Standard: the td element
SPECcolspanは1〜1000、rowspanは0〜65534の範囲でtable grid上のcell spanを指定する。rowspan="0"は同じrow groupの残り行を対象とする。重複slotはtable model error。確認済みHTML Standard: attributes common to td and th
SPECheadersは同じtableにあるthのIDを空白区切りで参照し、header/data-cell relationshipの処理に参加する。適合性の要件と、algorithmで形成するrelationshipを区別する。確認済みHTML Standard: header and data cell semantics
AAMancestor tableのroleがtableならtdのroleはcell、gridまたはtreegridならgridcellとなる。HTML-AAMのrole mapping。実ブラウザーやplatform APIの観測結果とは別に記録。仕様確認済みHTML-AAM: td

Evidence

  1. HTML Standard: The td element — 意味、context、content model、終了タグ、IDL interface
  2. HTML Standard: Attributes common to td and th — colspan、rowspan、headers、cellIndex
  3. HTML Standard: Header and data cell semantics — 明示・自動header assignmentと関係付け
  4. HTML Standard: Forming a table — table grid、slot、model error
  5. HTML Accessibility API Mappings: td — ancestor table roleごとのcomputed role

Implementation Evidence

仕様上の主張と、選定したブラウザー・WPT・Accessibility treeでの観測を分けます。以下の記録は測定した環境とfixture・testの範囲に限られます。

td要素の実装Evidence登録表
種別再現確認の範囲記録する条件状態
IMPL tdのinterface、cellIndex、headers・colSpan・rowSpanのIDL値 2026-10-11 JST(fixture実行: 2026-10-10 16:00 UTC)/ Chrome UA 155.0.0.0 / Windows NT 10.0 UA / viewport 870×668 / navigator.language=ja。build-config/yugien/research-results/td-v1/をloopback 127.0.0.1:4195で表示し、12/12 checks pass。HTMLTableCellElement、row内cellIndex=1、範囲外-1、colSpanのdefault・0・1001 clamp、rowSpanのdefault・無効値・65535 clamp・0、headers反映、rowのcells.lengthを確認。Chrome 1環境のみ。OS build・他browserは未記録・未測定。 部分観測(Chrome 155 / 12/12 checks)
WPT 共通cellIndex、rowspan=0、tdのcolSpan境界に関する選定WPT 2026-10-11 JST / Chrome UA 155.0.0.0 / wpt.live再実行。cellIndex.html 6/6 pass。rowspan-0.html 2/2 pass。col-span-limits.htmlは5件中3件pass。td.colSpanのIDL代入、HTML attribute parsing、上下限を扱う3件はpass。残る2件は同じfile内のcol要素のspanによるtable幅testで、期待値53に対し51、期待値51に対し50となった。tdのcolspan test failureとは分類しない。選定test合計11/13 pass。wpt.liveのupstream revisionは固定できず、他browser・未選定WPTは未実施。

実測時のテスト版は未記録です。リンク先の内容は変わることがあり、当時と同じテストで再確認できるとは限りません。

部分実行(選定WPT 11/13 pass、td属性testはpass)
AAM Chromeのbrowser role queryによるnative table、row、data/header cell、table nameの観測 2026-10-11 JST / Chrome UA 155.0.0.0 / viewport 870×668。同fixtureに対するbrowser role queryで、accessible nameがFruit prices todayのtable 1、row 3、data cell 2、columnheader 2(Fruit・Price)、rowheader 2(Apples・Oranges)、gridcell 0を確認。aria-hiddenの計測tableはtable role queryに現れなかった。headersからの関係は個別確認していない。role queryの観測はHTML-AAM全mappingやplatform APIの保証ではない。Windows UIA、NVDA等の読み上げは未測定。 部分観測(Chrome 155 browser role query / 1環境)

WPTの選定test、ブラウザーのAccessibility tree、platform accessibility API、支援技術の読み上げは別のEvidenceです。未測定の層や組み合わせから結果を推測しません。

Coverage / Open Issues

  • Reviewedtdの意味、context、content model、主要属性とIDL境界、HTML-AAM role mapping
  • Openheader assignment algorithmの全分岐、重複・欠落ID、span境界とtable model errorの網羅
  • Open選定WPT以外の全test、他ブラウザー、異なるrow group・nested table構造
  • Openplatform accessibility API、NVDA等の支援技術による読み上げと操作、ブラウザー間差、Expert-gap Review

このTopicは初期Coverageです。特定環境の測定結果や仕様のmappingは、全ブラウザー・OS・支援技術で同じ公開・発話になることを示しません。

Related surfaces

最小例と初心者向けの使い方はYugienのtd要素ページで説明しています。見出しの意味とscope・headersはth Topic、表全体のgridとparser recoveryはtable Topic、表題はcaption Topicを参照してください。