HTML / Element / Initial coverage

<caption>要素

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

Technical Summary

captionは、親要素がtableであるとき、その表の題名を表す要素です。適合するHTMLでは表の最初の子要素として置き、表の目的や内容を短く説明します。

HTML-AAMではcaptionをcaption roleに対応付け、親tableとの名前付け関係を定義します。ただし、captionの文字列が常にtable名になるわけではありません。aria-label / aria-labelledbyが優先され、captionがAccessibility Treeから隠されている場合は名前になりません。

Definition / Content model

caption要素の定義と適合条件
項目仕様上の内容条件・範囲
意味親がtable要素の場合、そのtableの題名を表すtable modelに参加する要素として扱う
配置tableの最初の子要素適合markupでは表ごとに1つまで。HTMLのcontent modelではcaptionは任意
Content modelFlow content子孫にtable要素を含めない
Content attributesGlobal attributes旧式のalign属性はobsoleteで不適合。位置や配置はCSSを使う
DOM interfaceHTMLTableCaptionElementHTMLElementを継承する。obsoleteなIDL属性alignも定義される

table内の題名は、tableの意味やデータを理解する手がかりになります。表をfigureに含め、その表だけがfigureの内容で、ほかにfigcaptionがある形では、HTML Standardはcaptionを省きfigcaptionを使うよう勧めています。この推奨が当てはまる条件を、figure内の別コンテンツがある場合へ拡張しません。

古いHTMLにはcaption align属性とHTMLTableCaptionElement.alignが残っていますが、どちらもobsoleteです。新しいmarkupでは使わず、CSSのcaption-sideやtext-alignを使います。

表との関連付けとDOM interface

captionは単なる隣接テキストではなく、親tableの子要素です。table.caption getterは最初のcaption子要素を返し、該当するcaptionがなければnullを返します。setterは指定したcaptionをtableへ設定します。createCaption()はcaptionがなければ作成し、deleteCaption()は削除します。

const table = document.querySelector("table");
const caption = table.caption; // 最初のcaption。なければ null

const ensuredCaption = table.createCaption();
ensuredCaption.textContent = "月ごとの来館者数";

table.deleteCaption();

caption以外の位置にある要素、たとえばtrの子として追加されたcaptionは、そのtableのcaption getterでは取得されません。DOM setterによる修復や複数captionを含む不適合markupは、通常の適合markupとは分けて扱います。

表示位置とtable model

HTML上のcaption位置と画面上のcaption位置は別の概念です。CSS Tablesのcaption-sideはcaption boxをtable gridの上または下へ配置します。たとえばcaption-side: bottomを指定しても、caption要素がHTMLの最初の子要素であることや、そのtableとのDOM関係は変わりません。

caption {
  caption-side: bottom;
  text-align: start;
}

CSSによる位置指定が画面上・DOM上・支援技術の読み上げで同じ順序になるとは仮定しません。各Surfaceでの結果を独立して測定します。

Accessible role・relation・table name

HTML-AAMで定義されるcaptionとtableの関係
Surface定義範囲・注意
caption roleWAI-ARIAのcaption roleへ対応付ける実際のplatform APIへのrole値は各APIのWAI-ARIA mappingを経由する
Parent relationcaptionからparent tableへのlabel関係をplatformごとに定義するIAccessible2・ATK・AXではlabel-for関係、UIAでは親tableのLabeledByがcaptionを指す
Table accessible namearia-label / aria-labelledbyを計算した後、最初のcaption子要素のtext subtreeを使うなお名前が空の場合はtitle属性を使う。captionがAX treeでhiddenなら名前に使わない

ここでいうaccessible nameは、支援技術が表を識別する名前です。可視captionの文字列が使われることが多いものの、author-provided ARIA nameがあれば優先されます。読み上げソフトが表の入口でその名前をいつ・どう読むかは、HTML-AAMのmappingだけからは断定できません。

Fact / Evidence(主張 / 根拠)

仕様上の定義、Accessibility mapping、CSSの表示位置を別の主張として追跡します。実装観測・WPT・支援技術の結果はImplementation Evidenceに分けます。

captionのFactと根拠位置
種別Fact / 主張条件・範囲状態根拠
SPECcaptionは、親要素がtableであるときその表の題名を表す親要素との関係、およびtable model上の役割確認済みHTML Standard: the caption element
SPECcaptionはtableの最初の子要素で、flow contentを持つが子孫tableを持たないHTML適合性・content model。tableには任意のcaptionを1つ置く確認済みHTML Standard: the caption element
SPECcaption roleとparent tableのlabel relationをplatform mappingで定義するWAI-ARIA role mappingと各platform APIの対応確認済みHTML-AAM: caption
SPECtable name計算ではauthor-provided ARIA nameの後に最初のcaptionを使い、その後title属性を確認するAccessible Nameの各段階とcaptionがAX treeに存在する条件確認済みHTML-AAM: table accessible name
SPECcaption-sideはcaption boxをtable gridの上か下へ配置するCSS Table Module Level 3で定義するtop / bottom。表示位置の定義確認済みCSS Tables: caption-side
SPECcaption align content attributeとHTMLTableCaptionElement.alignはobsolete新規markupではCSSへ置き換える確認済みHTML Standard: obsolete features

Evidence

  1. HTML Standard: The caption element — 意味、context、content model、HTMLTableCaptionElement
  2. HTML Standard: The table element — captionを含むtable content modelとDOM API
  3. HTML Accessibility API Mappings: caption — caption role、tableとのplatform relation
  4. HTML-AAM: table accessible name — ARIA、caption、titleの順序とhidden captionの条件
  5. CSS Table Module Level 3: caption-side — caption boxの表示位置
  6. HTML Standard: Obsolete features — caption alignとIDLのobsolete状態
  7. WPT: caption_001.html — caption getter / setter、null、子要素との関係
  8. W3C WAI: H39 — caption要素を使ってtableにcaptionを関連付ける技法

Implementation Evidence

以下は選定したfixture、WPT、Chrome、NVDAの観測です。仕様の適合や他環境で同じ出力になることを示すものではありません。AAM platform mapping、ブラウザーAccessibility Tree、Windows UI Automation、NVDAのspeech outputは区別して記録します。

caption要素の実装Evidence登録表
種別再現確認の範囲記録する条件状態
IMPL HTMLTableCaptionElement、DOM順序、table.caption、createCaption() / deleteCaption()、caption-sideの表示位置 2026-10-05 / Windows / Codex In-app Browser、Chrome UA 154.0.0.0、viewport 1536×695、navigator.language=en-US。build-config/atlas/research-results/caption-v1/(loopback 127.0.0.1:4210)で7/7 checks pass。IDL型、最初の子要素、getter、create/delete、行の子に置いたcaptionのgetter非該当、caption-side: bottomのcomputed値とtable下への描画を確認。Windows buildとDPRは未記録。 部分観測(Chrome 154 / fixture 7/7)
WPT caption elementのDOM APIとCSS caption-sideの選定WPT 2026-10-05 / Codex In-app Browser、Chrome UA 154.0.0.0 / wpt.live。caption_001.html はHarness OK、5/5 pass。caption-side-1.html はHarness OK、2/2 pass。選定ケース合計7/7 pass。wpt.liveの上流commitは固定できていない。CSS test中の複数captionはlayout test用の不適合markupであり、HTML適合性の確認には数えない。

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

部分実行(選定WPT 7/7 pass)
AAM Chrome Browser Accessibility Treeでのtable role・caption由来のtable name、および4ページの見出し・主要リンク構造 2026-10-05 / Codex In-app Browser、Chrome UA 154.0.0.0。caption fixtureのBrowser AX snapshotではcaption文字列をtable nameとして公開し、明示したaria-labelの優先、hidden captionを含むtableの無名状態、title fallbackを観測。新規JA/ENページ4件の見出し、caption付き例table、言語切替と関連記事リンクも確認。個別のcaption role/platform relationはこのsnapshotから確定していない。Windows UIAとNVDA発話は未測定。NVDA起動ではtargetable windowが得られず、続く画面操作はComputer Useがbrowser URLを確定できず停止したため、AT読み上げを取得できていない。 部分観測(Chrome Browser AX / UIA・NVDA未測定)

WPTは選定したケースのみです。browser accessibility treeやWindows UI Automationの値は、プラットフォームを超えたAAMの適合判定ではありません。NVDAの発話は、実際の出力を取得できた組み合わせに限って記録します。

Coverage / Open Issues

  • ReviewedHTML上の意味、最初の子要素という条件、content model、DOM API、CSS caption-side、HTML-AAM roleとtable name計算
  • Open全ブラウザーのHTML parsing・DOM setter差、複数captionを含む不適合markup、captionの子孫要素とtable model
  • Open選定WPT以外の全WPT、他ブラウザー、macOS AX / Linux ATK、Windows UIAの全propertyは未評価
  • OpenNVDAの読み上げ順・table navigation・JA/EN voice variation、他の支援技術との組み合わせ、Expert-gap Review

このページは初期Coverageです。記録した観測は、すべてのtable構造・ブラウザー・platform API・支援技術に一般化しません。

Related surfaces

初心者向けの例とcaptionの置き場所はYugienのcaption要素ページで説明しています。table全体のgridとparser recoveryはtable Topic、header cellとdata cellの関係はth Topicとtd Topicを参照してください。