HTML / Element / Initial coverage

<th>要素

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

Technical Summary

th要素は、table内のheader cellを表します。headerとdataの区別は文字の装飾ではなくtable model上の区別であり、scope、headers、セルの位置とspanが、各cellに割り当てるheaderを決めます。

単純な行・列の見出しではscopeが使えます。headerの向きだけでは関係を表せない複雑なtableでは、構造を簡素化したうえでidとheadersによる明示的な関係付けを検討します。HTML-AAMのrole mappingと、各ブラウザー・支援技術での観測は分けて評価します。

Definition / Content model

th要素の基本定義
項目定義
意味table内のheader cell
Contexttr要素の子
Content modelFlow content。ただしheader、footer、sectioning、heading contentの子孫は含めない
Categories特定のcontent categoryには分類されない
主要属性Global attributes、colspan、rowspan、headers、scope、abbr
DOM interfaceHTMLTableCellElement。tdと同じinterfaceを使う

見出しcellとdata cellはどちらもtable grid上のcellです。thはheader cell、tdはdata cellとなり、table modelで見出し関係が処理されます。

scopeとheader type

scopeのkeywordと意味
Keywordheaderの向き適用条件
row同じrow内のdata cellsrow headerを指定
col同じcolumn内のdata cellscolumn headerを指定
rowgroup同じrow group内のdata cellscellがrow groupに属する場合
colgroup同じcolumn group内のdata cellscellがcolumn groupに属する場合

scopeのkeywordがない場合、または未知の値の場合はAuto stateです。Autoは属性に書く値ではなく、仕様上のstateです。Auto stateではtable model内のcell位置と、縦横にdata cellsがあるかどうかなどからheaderの向きを判定します。rowgroupとcolgroupは、該当するgroupに属さないcellへ使えません。

HTML-AAMは、計算されたheaderの種類に応じてcolumnheaderまたはrowheader roleへ対応付けます。実装が公開するrole・関係・読み上げは、HTML-AAMの規定と別に確認します。

自動header assignment

cellにheaders属性がない場合、HTML Standardの「Forming relationships between data cells and header cells」algorithmが、cellのgrid座標を使って見出しを割り当てます。概略として、対象cellから同じrowの左方向と同じcolumnの上方向を走査し、scopeで指定されたrow group・column groupのheaderも候補にします。

<table>
  <thead>
    <tr><th scope="col">商品</th><th scope="col">価格</th></tr>
  </thead>
  <tbody>
    <tr><th scope="row">りんご</th><td>120円</td></tr>
  </tbody>
</table>

この例の「120円」には、列見出しの「価格」と行見出しの「りんご」が関係します。rowspanやcolspanはcellの占めるgrid slotを変えるので、header assignmentもその形に左右されます。ソース順だけを見て関係を推測せず、HTML Standardのalgorithmと実装結果を別々に追跡します。

idとheadersによる明示的な関連付け

headersを指定したcellでは、属性値をASCII whitespaceで分けたID tokenからheader listを作ります。各tokenは同じtableに属するthのIDを参照し、対象cell自身を参照してはいけません。関係を追うため、header cell自身のheadersから別のheaderへ連なる場合も仕様で定義されています。

<table>
  <thead>
    <tr><th id="cost" scope="colgroup" colspan="2">費用</th></tr>
    <tr>
      <th id="base" scope="col" headers="cost">基本料金</th>
      <th id="extra" scope="col" headers="cost">追加料金</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th id="plan" scope="row">プランA</th>
      <td headers="plan cost base">1,000円</td>
      <td headers="plan cost extra">200円</td>
    </tr>
  </tbody>
</table>

適合するmarkupでは、同じtableにある一意なIDを使い、参照関係を点検します。複雑なtableの構造自体を簡単にできないか先に検討してください。WAIのauthoring guidanceも、単純な表ではscope、多段・複数方向の関連付けが必要な表ではidとheadersを使う例を示しています。

主要属性とDOM interface

thとセル共通の属性
属性対象と注意点
scoperow、col、rowgroup、colgroupのkeyword。欠落・不明値はAuto state
headerstdとthで使える。同一table内のth IDを参照するtoken列
abbrほかの文脈でこのheaderを参照するときに使う代替label。略記とは限らない
colspan / rowspan同じtable grid上でcellが占めるcolumn数・row数。上限やrow group境界を含む条件を確認する

HTMLTableCellElementにはcellIndex、colSpan、rowSpan、headers、scope、abbrなどがあります。headersやscopeのIDL属性が文字列を反映することと、ブラウザーがAccessibility APIへ公開するheader relationshipは別のsurfaceです。

Fact / Evidence(主張 / 根拠)

仕様上の主張を対象範囲と根拠位置に対応付けます。実装・WPT・Accessibilityの測定結果はImplementation Evidenceに分け、未測定範囲はCoverage / Open Issuesに記録します。

主要Factと根拠位置
種別Fact / 主張条件・範囲状態根拠
SPECthはtable内のheader cellを表す。trの子として配置する要素とcontent modelを扱う場合。確認済みHTML Standard: the th element
SPECscopeの4 keywordはrow・column・group単位のheader stateを指定する。欠落・不明値はAuto stateとなる。rowgroup / colgroup stateは、cellが該当するgroupに属する条件がある。確認済みHTML Standard: the th element
SPECheadersは同じtableのth IDを空白区切りで参照し、cell自身を参照しない。属性値が指定された場合のtoken処理とheader listを扱う。確認済みHTML Standard: header and data cell semantics
SPECthのAccessibility roleはheader typeに応じてcolumn headerまたはrow headerに対応する。HTML-AAMはcolumn / column group headerとrow / row group headerでrole mappingを分ける。確認済みHTML-AAM: th element
SPECabbrはheader cellをほかの文脈で参照するための代替labelを指定できる。実際にどの環境・支援技術がそのlabelをどう使うかは個別に観測する。確認済みHTML Standard: the th element

Evidence

  1. HTML Standard: The th element — 意味、context、content model、scope、abbr、DOM interface
  2. HTML Standard: Attributes common to td and th — rowspan、colspan、headers、cellIndex
  3. HTML Standard: Header and data cell semantics — header typeとdata/header relationshipのalgorithm
  4. HTML Accessibility API Mappings: th — computed roleとplatform mapping
  5. WAI Tables Tutorial — 単純な見出しと複雑な見出し関連付けのauthoring guidance

Implementation Evidence

仕様上の主張とは別に、ブラウザー、WPT、Accessibility API、支援技術の結果を記録します。以下は選定したfixture・test・環境の範囲であり、全実装や全支援技術の共通結果を意味しません。

th要素の実装Evidence登録表
種別再現確認の範囲記録する条件状態
IMPL scope、headers、abbrとrowSpan・colSpanのDOM反映、同じ表の見出しID参照を確認 2026-10-05 / Codex In-app Browser、Chrome UA 154.0.0.0、viewport 870×668、navigator.language=ja。fixture build-config/yugien/research-results/th-v1/(127.0.0.1:4194)で8/8 checks pass。scope(col / row / colgroup)、headers、abbr、rowSpan、colSpanを確認。1環境のみ。 部分観測(Chrome 154 / 1環境)
WPT thを含む表セルのcellIndexと、表行のcells collectionに関する選定WPT 2026-10-05 / Codex In-app Browser、Chrome UA 154.0.0.0 / wpt.live。cellIndex.html は6/6 pass。cells.html は1/1 pass。合計7/7 pass。wpt.liveの上流commitは固定できていない。scopeによる自動見出し関連付け、複雑な表のheader assignment、他ブラウザーは未実施。

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

部分実行(7/7 pass)
AAM ブラウザーのaccessibility role/nameによるtable、columnheader、rowheader、cell、caption nameの観測。実スクリーンリーダーは未確認 2026-10-05 / Codex In-app Browser、Chrome UA 154.0.0.0、Windows NT 10.0 UA、viewport 870×668。Playwrightのbrowser accessibility role/name検索でtable 3、row 16、columnheader 10、rowheader 12、cell 24を観測。Fruit prices todayのcaptionがtableのaccessible nameとして一致し、見出し名も取得できた。これはブラウザー側のAX観測であり、支援技術の読み上げ確認ではない。NVDA等の実読み上げは未実施。Windows UI Automationは依頼により対象外。 部分観測(Browser AX / 読み上げ未確認)

WPTの実行記録と、ブラウザーのAccessibility tree・Windows UI Automation・NVDAによる実測記録を区別します。選定したテストの結果はWPT全体の適合性を示しません。

Coverage / Open Issues

  • Reviewed意味、context、主要属性、scope state、headers tokenの同一table条件、HTML-AAMの基本role mapping
  • Openheader assignment algorithm全分岐、nested headers、重複ID、rowspan・colspan上限と境界条件の網羅
  • OpenWPTは選定範囲のみ。他ブラウザー、全WPT、Windows UIA property全項目、NVDA以外の支援技術は未評価
  • Openabbrの読み上げ利用、複雑な表でのannounce順、ブラウザー・支援技術間の組み合わせ差、Expert-gap Review

このページは初期Coverageです。ここで記録した結果は、すべてのtable構造・ブラウザー・支援技術で同じheader relationshipが公開されることを意味しません。

Related surface

初心者向けの見出し例とscopeの使い方はYugienのth要素ページ、データを入れるセルの例はYugienのtd要素ページを参照してください。仕様とEvidenceはtd Topicで確認できます。表の題名とaccessible nameはcaption Topic、表全体のtable modelとparser recoveryはtable Topicを参照してください。