メインコンテンツへスキップ

colgroup要素


1.仕様

COLGROUP要素は、
表(テーブル)の
列のグループを
表します。

colgroup

列のグループ (table column group)

種類

通常要素

カテゴリ

なし

使用できるコンテキスト
table要素の子であるcaption要素の後

table要素の子であるcaption要素の後のコンテンツとして、使用できます。

table要素の子として、caption要素の後、thead, tbody, tfoot および tr要素の前にあります。

コンテンツモデル
col要素またはtemplate要素のいずれかを0個以上

col要素またはtemplate要素のいずれかを0個以上が配置できます。

span属性が存在する場合は、なし。spam属性が存在しない場合は、0 個以上のcol要素と template要素。

タグの省略
どちらのタグも省略できます。

colgroup要素内の最初の要素が col要素であり、その要素の直前に終了タグが省略された別の colgroup 要素が存在しない場合は、colgroup要素の開始タグを省略できます。 (要素が空の場合は省略できません。)

colgroup要素の直後に ASCII 空白またはコメントが続かない場合は、colgroup要素の終了タグを省略できます。

コンテンツ属性
グローバル属性 他
span属性
要素がまたがる列の数
DOM インターフェイス
HTMLTableColElement
  1. [Exposed=Window]
  2. interface HTMLTableColElement : HTMLElement {
  3. [HTMLConstructor] constructor();
  4.  
  5. [CEReactions] attribute unsigned long span;
  6.  
  7. // also has obsolete members
  8. };
HTMLElement
  1. [Exposed=Window]
  2. interface HTMLElement : Element {
  3. [HTMLConstructor] constructor();
  4.  
  5. // metadata attributes
  6. [CEReactions] attribute DOMString title;
  7. [CEReactions] attribute DOMString lang;
  8. [CEReactions] attribute boolean translate;
  9. [CEReactions] attribute DOMString dir;
  10.  
  11. // user interaction
  12. [CEReactions] attribute (boolean or unrestricted double or DOMString)? hidden;
  13. [CEReactions] attribute DOMString inert;
  14. undefined click();
  15. [CEReactions] attribute DOMString accessKey;
  16. readonly attribute DOMString accessKeyLabel;
  17. [CEReactions] attribute boolean draggable;
  18. [CEReactions] attribute boolean spellcheck;
  19. [CEReactions] attribute DOMString writingSuggestions;
  20. [CEReactions] attribute DOMString autocapitalize;
  21.  
  22. [CEReactions] attribute [LegacyNullToEmptyString] DOMString innerText;
  23. [CEReactions] attribute [LegacyNullToEmptyString] DOMString outerText;
  24.  
  25. ElementInternals attachInternals();
  26.  
  27. // The popover API
  28. undefined showPopover();
  29. undefined hidePopover();
  30. boolean togglePopover(optional boolean force);
  31. [CEReactions] attribute DOMString? popover;
  32. };
  33.  
  34. HTMLElement includes GlobalEventHandlers;
  35. HTMLElement includes ElementContentEditable;
  36. HTMLElement includes HTMLOrSVGElement;
Element
  1. [Exposed=Window]
  2. interface Element : Node {
  3. readonly attribute DOMString? namespaceURI;
  4. readonly attribute DOMString? prefix;
  5. readonly attribute DOMString localName;
  6. readonly attribute DOMString tagName;
  7.  
  8. [CEReactions] attribute DOMString id;
  9. [CEReactions] attribute DOMString className;
  10. [SameObject, PutForwards=value] readonly attribute DOMTokenList classList;
  11. [CEReactions, Unscopable] attribute DOMString slot;
  12.  
  13. boolean hasAttributes();
  14. [SameObject] readonly attribute NamedNodeMap attributes;
  15. sequence<DOMString> getAttributeNames();
  16. DOMString? getAttribute(DOMString qualifiedName);
  17. DOMString? getAttributeNS(DOMString? namespace, DOMString localName);
  18. [CEReactions] undefined setAttribute(DOMString qualifiedName, DOMString value);
  19. [CEReactions] undefined setAttributeNS(DOMString? namespace, DOMString qualifiedName, DOMString value);
  20. [CEReactions] undefined removeAttribute(DOMString qualifiedName);
  21. [CEReactions] undefined removeAttributeNS(DOMString? namespace, DOMString localName);
  22. [CEReactions] boolean toggleAttribute(DOMString qualifiedName, optional boolean force);
  23. boolean hasAttribute(DOMString qualifiedName);
  24. boolean hasAttributeNS(DOMString? namespace, DOMString localName);
  25.  
  26. Attr? getAttributeNode(DOMString qualifiedName);
  27. Attr? getAttributeNodeNS(DOMString? namespace, DOMString localName);
  28. [CEReactions] Attr? setAttributeNode(Attr attr);
  29. [CEReactions] Attr? setAttributeNodeNS(Attr attr);
  30. [CEReactions] Attr removeAttributeNode(Attr attr);
  31.  
  32. ShadowRoot attachShadow(ShadowRootInit init);
  33. readonly attribute ShadowRoot? shadowRoot;
  34.  
  35. Element? closest(DOMString selectors);
  36. boolean matches(DOMString selectors);
  37. boolean webkitMatchesSelector(DOMString selectors); // legacy alias of .matches
  38.  
  39. HTMLCollection getElementsByTagName(DOMString qualifiedName);
  40. HTMLCollection getElementsByTagNameNS(DOMString? namespace, DOMString localName);
  41. HTMLCollection getElementsByClassName(DOMString classNames);
  42.  
  43. [CEReactions] Element? insertAdjacentElement(DOMString where, Element element); // legacy
  44. undefined insertAdjacentText(DOMString where, DOMString data); // legacy
  45. };
GlobalEventHandlers
  1. interface mixin GlobalEventHandlers {
  2. attribute EventHandler onabort;
  3. attribute EventHandler onauxclick;
  4. attribute EventHandler onbeforeinput;
  5. attribute EventHandler onbeforematch;
  6. attribute EventHandler onbeforetoggle;
  7. attribute EventHandler onblur;
  8. attribute EventHandler oncancel;
  9. attribute EventHandler oncanplay;
  10. attribute EventHandler oncanplaythrough;
  11. attribute EventHandler onchange;
  12. attribute EventHandler onclick;
  13. attribute EventHandler onclose;
  14. attribute EventHandler oncontextlost;
  15. attribute EventHandler oncontextmenu;
  16. attribute EventHandler oncontextrestored;
  17. attribute EventHandler oncopy;
  18. attribute EventHandler oncuechange;
  19. attribute EventHandler oncut;
  20. attribute EventHandler ondblclick;
  21. attribute EventHandler ondrag;
  22. attribute EventHandler ondragend;
  23. attribute EventHandler ondragenter;
  24. attribute EventHandler ondragleave;
  25. attribute EventHandler ondragover;
  26. attribute EventHandler ondragstart;
  27. attribute EventHandler ondrop;
  28. attribute EventHandler ondurationchange;
  29. attribute EventHandler onemptied;
  30. attribute EventHandler onended;
  31. attribute OnErrorEventHandler onerror;
  32. attribute EventHandler onfocus;
  33. attribute EventHandler onformdata;
  34. attribute EventHandler oninput;
  35. attribute EventHandler oninvalid;
  36. attribute EventHandler onkeydown;
  37. attribute EventHandler onkeypress;
  38. attribute EventHandler onkeyup;
  39. attribute EventHandler onload;
  40. attribute EventHandler onloadeddata;
  41. attribute EventHandler onloadedmetadata;
  42. attribute EventHandler onloadstart;
  43. attribute EventHandler onmousedown;
  44. [LegacyLenientThis] attribute EventHandler onmouseenter;
  45. [LegacyLenientThis] attribute EventHandler onmouseleave;
  46. attribute EventHandler onmousemove;
  47. attribute EventHandler onmouseout;
  48. attribute EventHandler onmouseover;
  49. attribute EventHandler onmouseup;
  50. attribute EventHandler onpaste;
  51. attribute EventHandler onpause;
  52. attribute EventHandler onplay;
  53. attribute EventHandler onplaying;
  54. attribute EventHandler onprogress;
  55. attribute EventHandler onratechange;
  56. attribute EventHandler onreset;
  57. attribute EventHandler onresize;
  58. attribute EventHandler onscroll;
  59. attribute EventHandler onscrollend;
  60. attribute EventHandler onsecuritypolicyviolation;
  61. attribute EventHandler onseeked;
  62. attribute EventHandler onseeking;
  63. attribute EventHandler onselect;
  64. attribute EventHandler onslotchange;
  65. attribute EventHandler onstalled;
  66. attribute EventHandler onsubmit;
  67. attribute EventHandler onsuspend;
  68. attribute EventHandler ontimeupdate;
  69. attribute EventHandler ontoggle;
  70. attribute EventHandler onvolumechange;
  71. attribute EventHandler onwaiting;
  72. attribute EventHandler onwebkitanimationend;
  73. attribute EventHandler onwebkitanimationiteration;
  74. attribute EventHandler onwebkitanimationstart;
  75. attribute EventHandler onwebkittransitionend;
  76. attribute EventHandler onwheel;
  77. };
ElementContentEditable
  1. interface mixin ElementContentEditable {
  2. [CEReactions] attribute DOMString contentEditable;
  3. [CEReactions] attribute DOMString enterKeyHint;
  4. readonly attribute boolean isContentEditable;
  5. [CEReactions] attribute DOMString inputMode;
  6. };
HTMLOrSVGElement
  1. interface mixin HTMLOrSVGElement {
  2. [SameObject] readonly attribute DOMStringMap dataset;
  3. attribute DOMString nonce; // intentionally no [CEReactions]
  4.  
  5. [CEReactions] attribute boolean autofocus;
  6. [CEReactions] attribute long tabIndex;
  7. undefined focus(optional FocusOptions options = {});
  8. undefined blur();
  9. };
ARIA in HTML
暗黙的="No" ARIAロール="No" aria-* 属性="No"

暗黙的な ARIAセマンティクスがありませんが、意味はあり、この意味は、ARIA によって提供されず、ARIA のユーザーに公開されていないロール、状態、プロパティで表現される可能性があります。

作成者は、暗黙的な ARIAセマンティクス, または HTML要素のネイティブセマンティクスを上書きしてはいけません。

記述できる aria-* 属性はありません。

レンダリング
ブロックボックス
テーブル
  1. colgroup {
  2. display: table-column-group;
  3. unicode-bidi: isolate;
  4. }
  5. colgroup[hidden] {
  6. display: table-column-group;
  7. visibility: collapse;
  8. }
  9. table[rules=groups i] > colgroup {
  10. border-inline-width: 1px;
  11. border-inline-style: solid;
  12. }

CSS を大雑把に読むと、 表組版コンテキストに参加する適切な内部テーブルボックス(テーブルトラックグループボックス)を生成する。ただ、このボックスはレンダリングされません。 などになります。

説明
colgroup要素は、列のグループを表します。

colgroup要素は、表(テーブル・table)の列のグループを表します。

  1. <!DOCTYPE html>
  2. <html lang="ja">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>colgroup要素の例 - (Example of colgroup element) | 離珠のHTMLでしぃ!</title>
  6. </head>
  7. <body>
  8. <h1>colgroup要素の例</h1>
  9. <table>
  10. <caption>colgroup要素の例</caption>
  11. <colgroup>
  12. <col>
  13. <col>
  14. <col>
  15. </colgroup>
  16. <thead>
  17. <tr>
  18. <th>id</th>
  19. <th>name</th>
  20. <th>data</th>
  21. </tr>
  22. </thead>
  23. <tbody>
  24. <tr>
  25. <td>10</td>
  26. <th>name01</th>
  27. <td>data01</td>
  28. </tr>
  29. <tr>
  30. <td>20</td>
  31. <th>name02</th>
  32. <td>data02</td>
  33. </tr>
  34. </tbody>
  35. <tbody>
  36. <tr>
  37. <td>55</td>
  38. <th>name55</th>
  39. <td>data55</td>
  40. </tr>
  41. <tr>
  42. <td>57</td>
  43. <th>name57</th>
  44. <td>data57</td>
  45. </tr>
  46. <tr>
  47. <td>59</td>
  48. <th>name59</th>
  49. <td>data59</td>
  50. </tr>
  51. </tbody>
  52. <tfoot>
  53. <tr>
  54. <td>-</td>
  55. <th>total</th>
  56. <td>data99</td>
  57. </tr>
  58. </tfoot>
  59. </table>
  60. </body>
  61. </html>

このサンプルへのリンクです。
(./excolgroup.htm)

JSONデータ
JSON形式での、データのイメージです。
  1. {
  2. "colgroup": {
  3. "check": "2024-09-01",
  4. "group": "Table",
  5. "element": "O O (col|template)* -- table column group. (Normal elements.) [None] --",
  6. "attlist": {
  7. "%Global;": "",
  8. "span": "NUMBER 1 -- default number of columns in group --",
  9. },
  10. "comment": "列のグループ (table column group)",
  11. "point": "列のグループを表します。",
  12. "description": "表(テーブル・table)の列のグループを表します。",
  13. "kind": "Normal",
  14. "categories": "None",
  15. "used": "table (caption?,colgroup*,thead?,(tbody|tr)*,tfoot?)",
  16. "usedsupplement": "table要素の子として、caption要素の後、thead, tbody, tfoot および tr要素の前にあります。",
  17. "contentmodel": "colgroup (col|template)*",
  18. "contentmodelsupplement": "span属性が存在する場合は、なし。spam属性が存在しない場合は、0 個以上のcol要素と template要素。",
  19. "tag": [
  20. "O",
  21. "O",
  22. ],
  23. "tagsupplement": [
  24. "colgroup要素内の最初の要素が col要素であり、その要素の直前に終了タグが省略された別の colgroup 要素が存在しない場合は、colgroup要素の開始タグを省略できます。 (要素が空の場合は省略できません。)",
  25. "colgroup要素の直後に ASCII 空白またはコメントが続かない場合は、colgroup要素の終了タグを省略できます。",
  26. ],
  27. "attributes": {"span": "要素がまたがる列の数"},
  28. "dominterface": "HTMLTableColElement",
  29. "rendering": [
  30. "Tables",
  31. "Bidirectional",
  32. ],
  33. "reference": [
  34. {
  35. "title": "HTML Living Standard. 4.9.3 The colgroup element.",
  36. "href": "https://html.spec.whatwg.org/multipage/tables.html#the-colgroup-element",
  37. "heading": "HTML Living Standard. 4.9.3 The colgroup element",
  38. "sub": "Last Updated 27 August 2024",
  39. },
  40. {
  41. "title": "HTML Living Standard. 15 Rendering 15.3.8 Tables.",
  42. "href": "https://html.spec.whatwg.org/multipage/rendering.html#tables-2",
  43. "heading": "HTML Living Standard. 15 Rendering 15.3.8 Tables",
  44. "sub": "Last Updated 27 August 2024",
  45. },
  46. {
  47. "title": "HTML 5.2 W3C Recommendation. 4.9.3 The colgroup element. W3C Recommendation, 14 December 2017.",
  48. "href": "https://www.w3.org/TR/2017/REC-html52-20171214/tabular-data.html#the-colgroup-element",
  49. "heading": "HTML 5.2 W3C 勧告. 4.9.3 The colgroup element",
  50. "sub": "W3C勧告、2017年12月14日",
  51. },
  52. {
  53. "title": "HTML 5.2 W3C Recommendation. 10.3.9. Tables.",
  54. "href": "https://www.w3.org/TR/2017/REC-html52-20171214/rendering.html#tables",
  55. "heading": "HTML 5.2 W3C 勧告. 10.3.9. Tables",
  56. "sub": "W3C勧告、2017年12月14日",
  57. },
  58. {
  59. "title": "HTML 5.1 W3C Recommendation. 4.9.3 The colgroup element. W3C Recommendation, 1 November 2016.",
  60. "href": "https://www.w3.org/TR/2016/REC-html51-20161101/tabular-data.html#the-colgroup-element",
  61. "heading": "HTML 5.1 W3C 勧告. 4.9.3 The colgroup element",
  62. "sub": "W3C勧告、2016年11月1日",
  63. },
  64. {
  65. "title": "HTML 5.1 W3C Recommendation. 10.3.9. Tables. W3C Recommendation, 1 November 2016.",
  66. "href": "https://www.w3.org/TR/2016/REC-html51-20161101/rendering.html#tables",
  67. "heading": "HTML 5.1 W3C 勧告. 10.3.9. Tables",
  68. "sub": "W3C勧告、2016年11月1日",
  69. },
  70. {
  71. "title": "HTML 5 W3C Recommendation. 4.9.3 The colgroup element. W3C Recommendation, 28 October 2014.",
  72. "href": "https://www.w3.org/TR/2014/REC-html5-20141028/tabular-data.html#the-colgroup-element",
  73. "heading": "HTML 5 W3C 勧告. 4.9.3 The colgroup element",
  74. "sub": "W3C勧告、2014年10月28日",
  75. },
  76. {
  77. "title": "HTML 5 W3C Recommendation. 10.3.9 Tables. W3C Recommendation, 28 October 2014.",
  78. "href": "https://www.w3.org/TR/2014/REC-html5-20141028/rendering.html#tables",
  79. "heading": "HTML 5 W3C 勧告. 10.3.9 Tables",
  80. "sub": "W3C勧告、2014年10月28日",
  81. },
  82. {
  83. "title": "HTML 4.01 Specification W3C Recommendation. 11.2.4 Column groups: the COLGROUP and COL elements. W3C Recommendation 24 December 1999.",
  84. "href": "https://www.w3.org/TR/html401/struct/tables.html#h-11.2.4",
  85. "heading": "HTML 4.01 Specification W3C 勧告. 11.2.4 Column groups: the COLGROUP and COL elements",
  86. "sub": "W3C勧告1999年12月24日",
  87. },
  88. {
  89. "title": "HTML 3.2 Reference Specification. W3C Recommendation 14-Jan-1997.",
  90. "href": "https://www.w3.org/TR/2018/SPSD-html32-20180315/",
  91. "heading": "HTML 3.2 Reference Specification",
  92. "sub": "W3C勧告1997年1月14日",
  93. },
  94. {
  95. "title": "MDN Web Docs. HTML <colgroup>: The Table Column Group element.",
  96. "href": "https://developer.mozilla.org/ja/docs/Web/HTML/Element/colgroup",
  97. "heading": "<colgroup>: 表の列グループ要素 - HTML: ハイパーテキストマークアップ言語 | MDN",
  98. },
  99. ],
  100. "version": {
  101. "first": "HTML4",
  102. "latest": "HTML Living Standard",
  103. },
  104. "domsupplement": {"span": "unsigned long"},
  105. }
  106. }

注意: 簡易に描画する為に、各項目の後ろに , を付与しています。JSON の形式では、末尾の項目の後には , は付けません。

最終確認日

2024-09-01


2.使用可能な箇所

table要素
配置できます。

colgroup要素を使用できる状態(コンテキスト・Context)は、 table要素の 1番目(caption要素がある場合は、その次の 2番目)に配置できます。


3.配置できるコンテンツ

col要素
template要素
配置できます。

colgroup要素(内容・コンテンツ・Content)として、0 以上の col要素template要素を配置できます。ただし、span属性が存在する場合は、配置できません。

table
caption
colgroup
thead
tbody
tfoot
Flow
col
tr
tr
tr
  1. <table>
  2. <caption>caption</caption>
  3. <colgroup>
  4. <col>
  5. <col>
  6. <col>
  7. </colgroup>
  8. <thead>
  9. <tr><th>id</th><th>name</th><th>data</th></tr>
  10. </thead>
  11. <tbody>
  12. <tr><td>10</td><th>name01</th><td>data01</td></tr>
  13. <tr><td>20</td><th>name02</th><td>data02</td></tr>
  14. </tbody>
  15. <tbody>
  16. <tr><td>55</td><th>name55</th><td>data55</td></tr>
  17. <tr><td>57</td><th>name57</th><td>data57</td></tr>
  18. <tr><td>59</td><th>name59</th><td>data59</td></tr>
  19. </tbody>
  20. <tfoot>
  21. <tr><td>-</th><th>total</th><td>data99</td></tr>
  22. </tfoot>
  23. </table>

colgroup要素のコンテンツの一部として、0個以上の col要素を配置できます。

ブロック
フォーマット
コンテキスト
テーブル
キャプション
ボックス
テーブル
フォーマット
コンテキスト
テーブル
トラック
グループ
ボックス
テーブル
トラック
ボックス
ブロック
コンテナ
ボックス

ボックスで表すと、table要素が存在して、その中に caption要素テーブルグリッドボックスがあります。

table要素は、ブロックレベルブロックコンテナであるボックス(テーブルラッパーボックス)を生成します。table要素を含むブロックフォーマットコンテキストがない場合は、新しいブロックフォーマットコンテキストを確立します。table要素は、ブロックレベルのボックスを生成するcaption要素を配置します。他の要素はテーブルグリッドボックス内に収めます。なのでここでは、インラインフォーマットコンテキストは確立されません。
尚、この説明は各要素のレンダリングに関する指定が既定値での話で、個々にスタイルを指定した場合はこの限りではありません。


4.属性

グローバル属性と、
span属性 を
設定できます。

colgroup要素は、グローバル属性span属性 を設定できます。

span属性

  1. <table>
  2. <colgroup><col></colgroup>
  3. <colgroup span="" style="background-color: #ccffff;"></colgroup>
  4. <thead>
  5. <tr><th>id</th><th>name</th><th>data</th></tr>
  6. </thead>
  7. <tbody>
  8. <tr><td>10</td><th>name01</th><td>data01</td></tr>
  9. <tr><td>20</td><th>name02</th><td>data02</td></tr>
  10. </tbody>
  11. <tbody>
  12. <tr><td>55</td><th>name55</th><td>data55</td></tr>
  13. <tr><td>57</td><th>name57</th><td>data57</td></tr>
  14. <tr><td>59</td><th>name59</th><td>data59</td></tr>
  15. </tbody>
  16. <tfoot>
  17. <tr><td>-</th><th>total</th><td>data99</td></tr>
  18. </tfoot>
  19. </table>

span属性は、要素がまたがる列の数を指定します。

idnamedata
10name01data01
20name02data02
55name55data55
57name57data57
59name59data59
-totaldata99

5.Web API

id属性を用いて
getElementById()メソッドで
要素を取得する方法がお勧めです。

colgroup要素を表すプロパティはないので、id属性を用いて documentgetElementById()メソッドで、要素を取得する方法がお勧めです。この時に取得できるのはHTMLTableColElement オブジェクトです。


6.レンダリング

  1. colgroup {
  2. display: table-column-group;
  3. unicode-bidi: isolate;
  4. }

colgroup要素は、ブロックレベルのテーブルフォーマットコンテキストに参加する適切な内部テーブルボックスを生成します。

caption
10name01data01
20name02data02
  1. <table style="border-collapse: ;
    border-spacing: px; border: ;">
  2. <caption style="caption-side: ;
    border-style: ;
    border-width: px;">caption</caption>
  3. <colgroup><col></colgroup>
  4. <colgroup span="" style="background-color: #ccffff; border: ;"></colgroup>
  5. <tbody>
  6. <tr><td>10</td><th>name01</th><td>data01</td></tr>
  7. <tr><td>20</td><th>name02</th><td>data02</td></tr>
  8. </tbody>
  9. </table>

colgroup要素の装飾例です。例示で分かり易くする為に、別途にセルの境界線の装飾を指定できる様にしています。

とりあえず詰め込んだ例示なので、組み合わせによっては効果のない物もあります。またスクリプトにて動的に処理している為、指定する順番で効果が異なる可能性もあります。
実際に使用する場合は、動作確認を改めて行ってから採用して下さい。

table要素border-collapseプロパティcolgroup要素borderプロパティとは関係がある様で、組み合わせによってはcolgroup要素borderプロパティが無効の事があります。


7.気を付ける点

列(Column.) は、セル(Cell.) の積み上げで表しているので、安易に colgroup要素, col要素を用いない方が良いかもしれません。

テンプレートエンジンなどを用いれば、セル自体を細工して列の処理が出来ますし、 動的にスクリプトで処理するなら、セルを起点として列単位にセルに対して処理すれば良い訳です。


8.付記