<col>要素
Technical Summary
colは、親のcolgroup内で1列以上を表す空要素です。列の設定をまとめて書けますが、セル、見出し、列の名前は作りません。
列の見出しはth、データはtdまたはthに書きます。列要素のCSS効果とアクセシビリティ上の関係は、通常の要素やセルとは別に扱います。
定義・配置・HTMLの条件
colは、親がtableのcolgroupであるとき、そのグループ内の1列以上を表します。colgroupにspan属性がある場合、その子にcolを置く形は適合しません。
| 項目 | 仕様上の条件 | 読み方 |
|---|---|---|
| 親 | span属性を持たないcolgroup | 列グループを作り、その中に列を置く |
| 中身 | Nothing(子を持たない) | 見出しやセル本文は置かない |
| 終了タグ | HTMLでは終了タグなし | <col>だけを書く |
| 属性 | グローバル属性とspan | spanはこの要素が表す列数 |
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幅へ影響させます。
| Property | 条件と効果 |
|---|---|
background | 列内のcellとrowの背景がtransparentの場合に、列の背景が見える |
width | 列のminimum widthを指定する。自動table layoutで最終幅を固定する指定ではない |
border | tableがborder-collapse: collapseの場合にborder conflict resolutionへ参加する |
visibility | collapseは列を描画せず、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に残します。
| 種別 | Fact / 主張 | 条件・範囲 | 状態 | 根拠 |
|---|---|---|---|---|
| SPEC | colはspanを持たないcolgroupの子であり、中身を持たず、HTMLで終了タグを持たない。 | 要素のcontext、content model、tag omission | 仕様確認済み | HTML Standard: the col element |
| SPEC | col spanは1〜1000の列数を表し、列形成のtable modelに参加する。 | 適合するmarkup、DOM reflection、table processing algorithmを区別 | 仕様確認済み | HTML Standard: col / forming a table |
| SPEC | CSS 2.1では列boxにbackground、width、border、visibilityを適用できるが、各propertyに条件がある。 | table layer、border-collapse、列幅計算、visibility collapse | 仕様確認済み | CSS 2.1: columns |
| SPEC | HTML-AAMはcolをARIA roleや掲載platform accessibility APIへmappingしない。 | HTML-AAM 1.0 Editor's Draftのelement mapping | 仕様確認済み | HTML-AAM: col |
Evidence
- HTML Standard: The
colelement — context, empty content model, end-tag omission, span, and interface - HTML Standard: Forming a table — columns, groups, slots, and cell spans
- HTML Standard: The “in table” insertion mode — parser handling of table children
- CSS 2.1: Columns — applicable properties and column effects
- HTML-AAM:
col— computed role and platform mappings - Web Platform Tests:
col-span-limits.html— span limits, reflection, and table layout - Web Platform Tests:
colgroup-col.html— tentative CSS column and column-group width checks
Implementation Evidence
ブラウザーのDOM・CSS観測、選定WPT、Accessibility tree queryを別々に記録します。各結果は実施した環境とtest範囲に限られます。
| 種別 | 再現確認の範囲 | 記録条件 | 状態 |
|---|---|---|---|
| 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で扱います。