HTML / Element / Initial coverage

<col>要素

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

Technical Summary

colは、親のcolgroup内で1列以上を表す空要素です。列の設定をまとめて書けますが、セル、見出し、列の名前は作りません。

列の見出しはth、データはtdまたはthに書きます。列要素のCSS効果とアクセシビリティ上の関係は、通常の要素やセルとは別に扱います。

定義・配置・HTMLの条件

colは、親がtableのcolgroupであるとき、そのグループ内の1列以上を表します。colgroupにspan属性がある場合、その子にcolを置く形は適合しません。

colの配置とHTML構文
項目仕様上の条件読み方
親span属性を持たないcolgroup列グループを作り、その中に列を置く
中身Nothing(子を持たない)見出しやセル本文は置かない
終了タグHTMLでは終了タグなし<col>だけを書く
属性グローバル属性とspanspanはこの要素が表す列数

spanと列数

spanを省略したcolは1列を表します。適合するHTMLで指定できる値は1〜1000の整数です。colgroupに子のcolがあるとき、列数は子のcolのspanを合計して表します。

<colgroup>
  <col>              <!-- 1列 -->
  <col span="2">     <!-- 2列 -->
</colgroup>

HTMLの適合条件と、DOM propertyに値を設定したときの動きは別の規則です。HTMLTableColElement.spanは既定値1のunsigned longで、scriptからの設定は1〜1000の範囲に丸められます。table modelの列形成では、不正な値や0は1として扱い、1000を超える値は1000に制限します。

colgroup spanだけでグループの列数を表す方法と、子のcol spanを合計する方法は、同じグループでは併用しません。

Table Model・parser・DOM API

table modelは、行、列、cellを格子状のslotとして組み立てます。colとspanは列とcolumn groupを形成する処理に参加しますが、cellはDOM上でtrの子です。cellがcolの子になるわけではありません。

適合するHTMLではcolをcolgroup内に置きます。parserはtable直下に現れたcolのために暗黙のcolgroupを作ることがありますが、これは入力HTMLが適合することを意味しません。

const column = document.querySelector("col");

column instanceof HTMLTableColElement; // true
column.span;                           // 省略時は1
column.span = 0;
column.span;                           // 1

// table cellはtrの子。colの子ではない。

colとcolgroupは同じHTMLTableColElement interfaceを使います。HTML Standardはtable.columnsのような列collection propertyを定義していません。

CSS列ボックス

CSS table modelでは列に対応するboxがありますが、そのboxはDOM上でcellを包みません。CSS 2.1では列と列グループに適用するpropertyを限定し、条件に応じてcellの描画やtable幅へ影響させます。

CSS 2.1で列に指定するpropertyと条件
Property条件と効果
background列内のcellとrowの背景がtransparentの場合に、列の背景が見える
width列のminimum widthを指定する。自動table layoutで最終幅を固定する指定ではない
bordertableがborder-collapse: collapseの場合にborder conflict resolutionへ参加する
visibilitycollapseは列を描画せず、table幅やspanning cellにも影響する

そのため、colorやpaddingなど通常の要素に使えるpropertyをcolへ指定しても、cell内の文字や余白に同じ効果が出るとは限りません。WPTのCSS列幅testにも未解決の差が記録されているため、測定値を全browserの保証として扱いません。

見出し関係とAccessibility mapping

colは列見出しの文字やaccessible nameを提供しません。人が見て読める見出しはthに書き、複雑な表では表の構造に合うscopeやheadersでheader associationを示します。列を色で区別する場合も、その色だけに情報を任せないようにします。

HTML-AAM Editor's Draftでは、colのcomputed roleと掲載されたplatform accessibility API mappingは「Not mapped」です。これは仕様上のmappingです。実際のbrowser accessibility tree、OS API、screen readerの読み上げは別々に観測する必要があります。

Fact / Evidence(主張 / 根拠)

主要な仕様上の主張と参照箇所を対応付けています。実装観測は下の表に分け、未測定範囲はCoverageに残します。

colの主要Factと根拠位置
種別Fact / 主張条件・範囲状態根拠
SPECcolはspanを持たないcolgroupの子であり、中身を持たず、HTMLで終了タグを持たない。要素のcontext、content model、tag omission仕様確認済みHTML Standard: the col element
SPECcol spanは1〜1000の列数を表し、列形成のtable modelに参加する。適合するmarkup、DOM reflection、table processing algorithmを区別仕様確認済みHTML Standard: col / forming a table
SPECCSS 2.1では列boxにbackground、width、border、visibilityを適用できるが、各propertyに条件がある。table layer、border-collapse、列幅計算、visibility collapse仕様確認済みCSS 2.1: columns
SPECHTML-AAMはcolをARIA roleや掲載platform accessibility APIへmappingしない。HTML-AAM 1.0 Editor's Draftのelement mapping仕様確認済みHTML-AAM: col

Evidence

  1. HTML Standard: The col element — context, empty content model, end-tag omission, span, and interface
  2. HTML Standard: Forming a table — columns, groups, slots, and cell spans
  3. HTML Standard: The “in table” insertion mode — parser handling of table children
  4. CSS 2.1: Columns — applicable properties and column effects
  5. HTML-AAM: col — computed role and platform mappings
  6. Web Platform Tests: col-span-limits.html — span limits, reflection, and table layout
  7. Web Platform Tests: colgroup-col.html — tentative CSS column and column-group width checks

Implementation Evidence

ブラウザーのDOM・CSS観測、選定WPT、Accessibility tree queryを別々に記録します。各結果は実施した環境とtest範囲に限られます。

colのImplementation Evidence register
種別再現確認の範囲記録条件状態
IMPL colのinterface、span、table model、CSS表示と列の背景 2026-10-19 JST / Chrome UA 155.0.0.0 / viewport 1280×720 / DPR 1.25 / navigator.language=ja。Yugien ja/en、Atlas ja/enの4ページでtitle・h1・mainを確認。loopback 127.0.0.1:4201のfixture checks 16/16 pass。interface、spanの既定値・反映・setter clamp、子要素を持たないこと、computed display、table model、列背景を確認。詳細はdocs/atlas/col-evidence-2026-10-19.md。Chrome 1環境のみ。 部分観測(Chrome 155 / fixture 16/16)
WPT colのspan範囲・反映と列幅に関する選定WPT 2026-10-19 JST / Chrome UA 155.0.0.0 / wpt.live。col-span-limits.html: 3/5 pass、2 fail。colgroup-col.html: 4/6 pass、2 fail。合計7/11 pass、4 fail。失敗は列幅の期待値と実測値の差。両testともHarness statusはOK。配信された正確なupstream revisionは未固定。詳細はdocs/atlas/col-evidence-2026-10-19.md。

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

部分観測(選定WPT 7/11成功・4失敗、版未固定)
AAM named table、row、cell、colのChrome browser accessibility treeでの公開 2026-10-19 JST / Chrome UA 155.0.0.0 / viewport 1280×720 / DPR 1.25。fixtureのnamed table Quarterly plan pricesはaccessibility treeにtable 1、row 3、cell 9として表示。colは個別nodeとして表示されず、HTML-AAM Editor's Draftでも対応roleなし。Chrome browser accessibility treeのみで、platform APIとスクリーンリーダー発話は未測定。詳細はdocs/atlas/col-evidence-2026-10-19.md。 部分観測(Chrome browser accessibility tree / 1環境)

Coverage / Open Issues

  • SPEC要素の意味、配置、content model、span、table model、CSS 2.1、HTML-AAM mapping
  • IMPLChrome 1環境のfixture観測。他browser、OS build、印刷、複雑なrowspan/colspan gridは未測定
  • WPT選定testのみ。wpt.liveが配信したrevision、test directory全体、他browserは未確認
  • AAMChrome browser accessibility tree queryのみ。Windows UIA、IAccessible2、ATK、Apple AX、screen reader発話は未測定
  • ReviewExpert-gap Reviewは未完了

このTopicは初期Coverageです。選定fixtureやWPTの結果を、すべてのHTML構造、browser、OS、CSS実装、支援技術へ一般化しません。

関連Surface

初心者向けの例はYugienのcol要素ページを参照してください。列グループはcolgroup Topic、表全体はtable Topic、列見出しとheader associationはth Topicで扱います。