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

th要素


1.仕様

TH要素は、
表(テーブル)の
ヘッダーセルを
表します。

th

ヘッダーセル (table header cell)

種類

通常要素

カテゴリ

なし

使用できるコンテキスト
tr要素に 0個以上

tr要素に 0個以上を そのコンテンツとして、使用できます。

コンテンツモデル
0個以上のフローコンテンツ (ヘディングコンテンツ, セクショニングコンテンツ, header要素, footer要素 を除く)

0個以上のフローコンテンツが配置できます。ですが、ヘディングコンテンツ, セクショニングコンテンツ, header要素, footer要素は子孫に持てません。

ヘディングコンテンツ, セクショニングコンテンツ, header要素, footer要素を除くフローコンテンツに分類される要素は、main要素, address要素, ol要素, ul要素, menu要素, dl要素, table要素, form要素, fieldset要素, search要素, hr要素, p要素, pre要素, blockquote要素, figure要素, div要素, dialog要素, script要素, noscript要素, template要素, input要素, textarea要素, select要素, label要素, button要素, output要素, progress要素, meter要素, datalist要素, picture要素, object要素, img要素, iframe要素, embed要素, video要素, audio要素, canvas要素, map要素, area要素, a要素, details要素, ins要素, del要素, abbr要素, b要素, bdi要素, bdo要素, cite要素, code要素, data要素, dfn要素, em要素, i要素, kbd要素, mark要素, q要素, s要素, samp要素, small要素, span要素, strong要素, sub要素, sup要素, u要素, var要素, time要素, ruby要素, br要素, wbr要素, slot要素, テキスト です。

タグの省略
終了タグは省略できます。

th要素の直後に td または th要素が続く場合、または親要素にそれ以上のコンテンツがない場合は、th要素の終了タグを省略できます。

コンテンツ属性
グローバル属性 他
colspan属性
セルがまたがる列の数
rowspan属性
セルがまたがる行数
headers属性
このセルのヘッダーセル
scope属性
ヘッダーセルを適用するセルを指定します
abbr属性
他のコンテキストでセルを参照するときにヘッダーセルに使用する代替ラベル
DOM インターフェイス
HTMLTableCellElement
  1. [Exposed=Window]
  2. interface HTMLTableCellElement : HTMLElement {
  3. [HTMLConstructor] constructor();
  4.  
  5. [CEReactions] attribute unsigned long colSpan;
  6. [CEReactions] attribute unsigned long rowSpan;
  7. [CEReactions] attribute DOMString headers;
  8. readonly attribute long cellIndex;
  9.  
  10. [CEReactions] attribute DOMString scope; // only conforming for th elements
  11. [CEReactions] attribute DOMString abbr; // only conforming for th elements
  12.  
  13. // also has obsolete members
  14. };
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
暗黙的="columnheader,rowheader,cell,gridcell" ARIAロール="No" aria-* 属性="GlobalAny"

暗黙的な ARIAセマンティクスは、role=columnheader, rowheader, cell, gridcell です。
祖先のtable要素がrole=tableとして公開されている場合、role=columnheader、rowheader、またはcell。祖先のテーブル要素が role=grid または treegrid として公開されている場合、 role=columnheader、rowheader または gridcell。祖先のテーブル要素が role=table、grid、treegrid として公開されていない場合、対応する役割はありません。

作成者は、暗黙的な ARIAセマンティクス, または HTML要素のネイティブセマンティクスを上書きしてはいけません。
祖先のtable要素がrole=table、grid、treegridの場合、以下の役割以外は許しません。祖先のtable要素がrole=tableとして公開されている場合、columnheader、rowheader、cellは許可されますが、推奨されません(NOT RECOMMENDED)。祖先のtable要素がrole=gridまたはtreegridとして公開されている場合、columnheader、rowheader、gridcellが許可されますが、推奨されません(NOT RECOMMENDED)。そうでない場合、祖先となるテーブル要素がrole=table、grid、treegridとして公開されていなければ、どのような役割でも構いません。

グローバル aria-* 属性と、許可されたロールに適用される任意の aria-* 属性が記述できます。

レンダリング
ブロックボックス
テーブル
  1. th {
  2. display: table-cell;
  3. vertical-align: inherit;
  4. padding: 1px;
  5. font-weight: bold;
  6. }
  7. table[rules=none i] > tr > th, table[rules=groups i] > tr > th, table[rules=rows i] > tr > th, table[rules=cols i] > tr > th, table[rules=all i] > tr > th, table[rules=none i] > thead > tr > th, table[rules=groups i] > thead > tr > th, table[rules=rows i] > thead > tr > th, table[rules=cols i] > thead > tr > th, table[rules=all i] > thead > tr > th, table[rules=none i] > tbody > tr > th, table[rules=groups i] > tbody > tr > th, table[rules=rows i] > tbody > tr > th, table[rules=cols i] > tbody > tr > th, table[rules=all i] > tbody > tr > th, table[rules=none i] > tfoot > tr > th, table[rules=groups i] > tfoot > tr > th, table[rules=rows i] > tfoot > tr > th, table[rules=cols i] > tfoot > tr > th, table[rules=all i] > tfoot > tr > th { border-color: black; }
  8. th[align=absmiddle i] { text-align: center; }
  9. th[valign=top i] { vertical-align: top; }
  10. th[valign=middle i] { vertical-align: middle; }
  11. th[valign=bottom i] { vertical-align: bottom; }
  12. th[valign=baseline i] { vertical-align: baseline; }
  13. th[nowrap] { white-space: nowrap; }
  14. table[border] > tr > th, table[border] > thead > tr > th, table[border] > tbody > tr > th, table[border] > tfoot > tr > th {
  15. border-width: 1px;
  16. border-style: inset;
  17. }
  18. table[rules=none i] > tr > th, table[rules=none i] > thead > tr > th, table[rules=none i] > tbody > tr > th, table[rules=none i] > tfoot > tr > th, table[rules=groups i] > tr > th, table[rules=groups i] > thead > tr > th, table[rules=groups i] > tbody > tr > th, table[rules=groups i] > tfoot > tr > th, table[rules=rows i] > tr > th, table[rules=rows i] > thead > tr > th, table[rules=rows i] > tbody > tr > th, table[rules=rows i] > tfoot > tr > th {
  19. border-width: 1px;
  20. border-style: none;
  21. }
  22. table[rules=cols i] > tr > th, table[rules=cols i] > thead > tr > th, table[rules=cols i] > tbody > tr > th, table[rules=cols i] > tfoot > tr > th {
  23. border-width: 1px;
  24. border-block-style: none;
  25. border-inline-style: solid;
  26. }
  27. table[rules=all i] > tr > th, table[rules=all i] > thead > tr > th, table[rules=all i] > tbody > tr > th, table[rules=all i] > tfoot > tr > th {
  28. border-width: 1px;
  29. border-style: solid;
  30. }

CSS を大雑把に読むと、 表組版コンテキストに参加する適切な内部テーブルボックス(テーブルセルボックス)を生成する。 などになります。

説明
th要素は、テーブルのヘッダーセルを表します。

th要素は、表(テーブル・table)のヘッダーセルを表します。

  1. <!DOCTYPE html>
  2. <html lang="ja">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>th要素の例 - (Example of th element) | 離珠のHTMLでしぃ!</title>
  6. </head>
  7. <body>
  8. <h1>th要素の例</h1>
  9. <table>
  10. <caption>th要素の例</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>

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

JSONデータ
JSON形式での、データのイメージです。
  1. {
  2. "th": {
  3. "check": "2024-09-01",
  4. "group": "Table",
  5. "element": "- O (%Flow)* -(%Heading|%Sectioning|header|footer) -- table header cell. (Normal elements.) [None] --",
  6. "attlist": {
  7. "%Global;": "",
  8. "colspan": "NUMBER 1 -- Number of columns that the cell is to span --",
  9. "rowspan": "NUMBER 1 -- Number of rows that the cell is to span --",
  10. "headers": "IDREFS #IMPLIED -- The header cells for this cell --",
  11. "scope": "%Scope; #IMPLIED -- Specifies which cells the header cell applies to --",
  12. "abbr": "%Text; #IMPLIED -- Alternative label to use for the header cell when referencing the cell in other contexts --",
  13. },
  14. "comment": "ヘッダーセル (table header cell)",
  15. "point": "テーブルのヘッダーセルを表します。",
  16. "description": "表(テーブル・table)のヘッダーセルを表します。",
  17. "kind": "Normal",
  18. "categories": "None",
  19. "used": "tr th*",
  20. "contentmodel": "th (%Flow)* -(%Heading|%Sectioning|header|footer)",
  21. "tag": [
  22. "-",
  23. "O",
  24. ],
  25. "tagsupplement": "th要素の直後に td または th要素が続く場合、または親要素にそれ以上のコンテンツがない場合は、th要素の終了タグを省略できます。",
  26. "attributes": {
  27. "colspan": "セルがまたがる列の数",
  28. "rowspan": "セルがまたがる行数",
  29. "headers": "このセルのヘッダーセル",
  30. "scope": "ヘッダーセルを適用するセルを指定します",
  31. "abbr": "他のコンテキストでセルを参照するときにヘッダーセルに使用する代替ラベル",
  32. },
  33. "dominterface": "HTMLTableCellElement",
  34. "rendering": [
  35. "Tables",
  36. "Bidirectional",
  37. ],
  38. "reference": [
  39. {
  40. "title": "HTML Living Standard. 4.9.10 The th element.",
  41. "href": "https://html.spec.whatwg.org/multipage/tables.html#the-th-element",
  42. "heading": "HTML Living Standard. 4.9.10 The th element",
  43. "sub": "Last Updated 27 August 2024",
  44. },
  45. {
  46. "title": "HTML Living Standard. 15 Rendering 15.3.8 Tables.",
  47. "href": "https://html.spec.whatwg.org/multipage/rendering.html#tables-2",
  48. "heading": "HTML Living Standard. 15 Rendering 15.3.8 Tables",
  49. "sub": "Last Updated 27 August 2024",
  50. },
  51. {
  52. "title": "HTML 5.2 W3C Recommendation. 4.9.10 The th element. W3C Recommendation, 14 December 2017.",
  53. "href": "https://www.w3.org/TR/2017/REC-html52-20171214/tabular-data.html#the-th-element",
  54. "heading": "HTML 5.2 W3C 勧告. 4.9.10 The th element",
  55. "sub": "W3C勧告、2017年12月14日",
  56. },
  57. {
  58. "title": "HTML 5.2 W3C Recommendation. 10.3.9. Tables.",
  59. "href": "https://www.w3.org/TR/2017/REC-html52-20171214/rendering.html#tables",
  60. "heading": "HTML 5.2 W3C 勧告. 10.3.9. Tables",
  61. "sub": "W3C勧告、2017年12月14日",
  62. },
  63. {
  64. "title": "HTML 5.1 W3C Recommendation. 4.9.10 The th element. W3C Recommendation, 1 November 2016.",
  65. "href": "https://www.w3.org/TR/2016/REC-html51-20161101/tabular-data.html#the-th-element",
  66. "heading": "HTML 5.1 W3C 勧告. 4.9.10 The th element",
  67. "sub": "W3C勧告、2016年11月1日",
  68. },
  69. {
  70. "title": "HTML 5.1 W3C Recommendation. 10.3.9. Tables. W3C Recommendation, 1 November 2016.",
  71. "href": "https://www.w3.org/TR/2016/REC-html51-20161101/rendering.html#tables",
  72. "heading": "HTML 5.1 W3C 勧告. 10.3.9. Tables",
  73. "sub": "W3C勧告、2016年11月1日",
  74. },
  75. {
  76. "title": "HTML 5 W3C Recommendation. 4.9.10 The th element. W3C Recommendation, 28 October 2014.",
  77. "href": "https://www.w3.org/TR/2014/REC-html5-20141028/tabular-data.html#the-th-element",
  78. "heading": "HTML 5 W3C 勧告. 4.9.10 The th element",
  79. "sub": "W3C勧告、2014年10月28日",
  80. },
  81. {
  82. "title": "HTML 5 W3C Recommendation. 10.3.9. Tables. W3C Recommendation, 28 October 2014.",
  83. "href": "https://www.w3.org/TR/2014/REC-html5-20141028/rendering.html#tables",
  84. "heading": "HTML 5 W3C 勧告. 10.3.9. Tables",
  85. "sub": "W3C勧告、2014年10月28日",
  86. },
  87. {
  88. "title": "HTML 4.01 Specification W3C Recommendation. 11.2.6 Table cells: The TH and TD elements. W3C Recommendation 24 December 1999.",
  89. "href": "https://www.w3.org/TR/html401/struct/tables.html#h-11.2.6",
  90. "heading": "HTML 4.01 Specification W3C 勧告. 11.2.6 Table cells: The TH and TD elements",
  91. "sub": "W3C勧告1999年12月24日",
  92. },
  93. {
  94. "title": "HTML 3.2 Reference Specification. W3C Recommendation 14-Jan-1997.",
  95. "href": "https://www.w3.org/TR/2018/SPSD-html32-20180315/",
  96. "heading": "HTML 3.2 Reference Specification",
  97. "sub": "W3C勧告1997年1月14日",
  98. },
  99. {
  100. "title": "MDN Web Docs. HTML <th>: The Table Header element.",
  101. "href": "https://developer.mozilla.org/ja/docs/Web/HTML/Element/th",
  102. "heading": "<th>: 表見出し要素 - HTML: ハイパーテキストマークアップ言語 | MDN",
  103. },
  104. ],
  105. "version": {
  106. "first": "HTML3",
  107. "latest": "HTML Living Standard",
  108. },
  109. }
  110. }

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

最終確認日

2024-09-01


2.使用可能な箇所

tr要素
配置できます。

th要素を使用できる状態(コンテキスト・Context)は、 tr要素の子として、配置できます。


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

セクショニングコンテンツ
ヘディングコンテンツ
header要素
footer要素を除く
フローコンテンツ
配置できます。

th要素(内容・コンテンツ・Content)として、セクショニングコンテンツ, ヘディングコンテンツ, header要素, footer要素を除く 0 以上の フローコンテンツを配置できます。

セクショニングコンテンツ, ヘディングコンテンツ, header要素, footer要素を除く フローコンテンツである要素は、main要素, address要素, ol要素, ul要素, menu要素, dl要素, table要素, form要素, fieldset要素, search要素, hr要素, p要素, pre要素, blockquote要素, figure要素, div要素, dialog要素, slot要素, script要素, noscript要素, template要素, input要素, textarea要素, select要素, label要素, button要素, output要素, progress要素, meter要素, datalist要素, picture要素, object要素, img要素, iframe要素, embed要素, video要素, audio要素, canvas要素, map要素, area要素, a要素, details要素, ins要素, del要素, abbr要素, b要素, bdi要素, bdo要素, br要素, cite要素, code要素, data要素, dfn要素, em要素, i要素, kbd要素, mark要素, q要素, ruby要素, s要素, samp要素, small要素, span要素, strong要素, sub要素, sup要素, time要素, u要素, var要素, wbr要素, text です。


4.属性

グローバル属性と、
colspan属性,
rowspan属性,
headers属性,
scope属性,
abbr属性 を
設定できます。

th要素は、グローバル属性colspan属性, rowspan属性, headers属性, scope属性, abbr属性 を設定できます。

colspan属性

  1. <table style="border-collapse: separate;
    border-spacing: 6px; border: solid 1px;">
  2. <caption style="border: solid 1px;">caption</caption>
  3. <colgroup>
  4. <col span="2">
  5. <col style="background-color: #ffffcc;">
  6. </colgroup>
  7. <thead>
  8. <tr><th>id</th><th>name</th><th>data</th></tr>
  9. </thead>
  10. <tbody>
  11. <tr><td>10</td><th colspan="" style="background-color: #ccffff; border: solid 1px;">name01</th><td>data01</td></tr>
  12. <tr><td>20</td><th>name02</th><td>data02</td></tr>
  13. </tbody>
  14. <tbody>
  15. <tr><td>55</td><th>name55</th><td>data55</td></tr>
  16. <tr><td>57</td><th>name57</th><td>data57</td></tr>
  17. <tr><td>59</td><th>name59</th><td>data59</td></tr>
  18. </tbody>
  19. <tfoot>
  20. <tr><td>-</th><th>total</th><td>data99</td></tr>
  21. </tfoot>
  22. </table>
  1. tr:hover {
  2. background: #ffccff!important;
  3. }

colspan属性はセルがまたがる列の数を示します。

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

rowspan属性

  1. <table style="border-collapse: separate;
    border-spacing: 6px; border: solid 1px;">
  2. <caption style="border: solid 1px;">caption</caption>
  3. <colgroup>
  4. <col span="2">
  5. <col style="background-color: #ffffcc;">
  6. </colgroup>
  7. <thead>
  8. <tr><th>id</th><th>name</th><th>data</th></tr>
  9. </thead>
  10. <tbody>
  11. <tr><td>10</td><th>name01</th><td>data01</td></tr>
  12. <tr><td>20</td><th>name02</th><td>data02</td></tr>
  13. </tbody>
  14. <tbody>
  15. <tr><td>55</td><th rowspan="" style="background-color: #ccffff; border: solid 1px;">name55</th><td>data55</td></tr>
  16. <tr><td>57</td><th>name57</th><td>data57</td></tr>
  17. <tr><td>59</td><th>name59</th><td>data59</td></tr>
  18. </tbody>
  19. <tfoot>
  20. <tr><td>-</th><th>total</th><td>data99</td></tr>
  21. </tfoot>
  22. </table>
  1. tr:hover {
  2. background: #ffccff!important;
  3. }

rowspan属性はセルがまたがる行の数を示します。

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

headers属性

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

headers属性はこのセルのヘッダーセルを示します。例示では実用性を考えず、記述の1つを提示しているだけです。 実際にヘッダーセルを示す必要が発生してから、その使い方, 必要性に応じて記述しましょう。

scope属性

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

scope属性はヘッダーセルを適用するセルを示します。例示では実用性を考えず、記述の1つを提示しているだけです。 実際にヘッダーセルの適用するセルを示す必要が発生してから、その使い方, 必要性に応じて記述しましょう。

abbr属性

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

abbr属性は他のコンテキストでセルを参照するときにヘッダーセルに使用する代替ラベルを示します。例示では実用性を考えず、記述の1つを提示しているだけです。 実際に他のコンテキストでセルを参照する事を想定する必要が発生してから、その使い方, 必要性に応じて記述しましょう。 というより、代替ラベルを必要としない程度にそのセルの内容をした方が良いと思うのですが。その上で枠外でそのセルの解説を必要に応じて付けるという方が表(テーブル)という物の見易さの点からは良いのではと思います。 まぁセルの内容が、外部の生データという事もあるかもしれないので、やはり現場でのこの表(テーブル)の意図, 使い方次第ですね。


5.Web API

tr要素
cellsプロパティは、
テーブルのセルの
th要素, td要素の集合を
返します。

table要素id属性を用いて documentgetElementById()メソッドで、要素を取得する方法がお勧めです。この時に取得できるのはHTMLTableElement オブジェクトです。そのプロパティである rowsプロパティが、テーブルのtr要素の集合を表します。この時に取得できるのはHTMLCollection オブジェクトです。そのプロパティである cellsプロパティが、テーブルのth要素, td要素の集合を表します。この時に取得できるのはHTMLCollection オブジェクトです。このインターフェイスは、要素の汎用的な集合(配列風のオブジェクト)を表し、リストから選択するためのメソッドとプロパティを提供します。
尚、この方法では th要素, td要素の一緒に扱われるので、判断が必要な場合は Element オブジェクトtagNameプロパティを参照すると良いでしょう。Element オブジェクトは、それぞれの要素のインターフェイスに継承されています。


6.レンダリング

  1. th {
  2. display: table-cell;
  3. vertical-align: inherit;
  4. padding: 1px;
  5. font-weight: bold;
  6. unicode-bidi: isolate;
  7. }

th要素は、テーブルフォーマットコンテキストに参加する適切な内部テーブルボックスを生成します。
また、この要素はブロックコンテナボックスを生成し、フローレイアウトを使用してそのコンテンツをレイアウトします。常に、その内容に対して新しいブロックフォーマットコンテキストを確立します。

caption
idnamedata
10name01data01
20name02data02
55name55data55
57name57data57
59name59data59
-totaldata99
  1. <table style="border-collapse: ;
    border-spacing: px; border: ;">
  2. <caption style="caption-side: ;
    border-style: ;
    border-width: px;">caption</caption>
  3. <colgroup>
  4. <col>
  5. <col span="" style="background-color: #ffffcc; border: ;">
  6. </colgroup>
  7. <thead>
  8. <tr><th>id</th><th>name</th><th>data</th></tr>
  9. </thead>
  10. <tbody>
  11. <tr><td>10</td><th colspan="" style="background-color: ;
    border-style: ;
    border-width: px;">name01</th><td>data01</td></tr>
  12. <tr><td>20</td><th>name02</th><td>data02</td></tr>
  13. </tbody>
  14. <tbody>
  15. <tr><td>55</td><th rowspan="" style="background-color: ;
    border-style: ;
    border-width: px;">name55</th><td>data55</td></tr>
  16. <tr><td>57</td><th style="border: double 3px;">name57</th><td>data57</td></tr>
  17. <tr><td>59</td><th>name59</th><td>data59</td></tr>
  18. </tbody>
  19. <tfoot>
  20. <tr><td>-</th><th>total</th><td>data99</td></tr>
  21. </tfoot>
  22. </table>
  1. tr:hover {
  2. background: #ffccff!important;
  3. }

th要素の装飾例です。というか、col要素tr要素の指定との関係を意図した例です。

セルのデータが name57 であるth要素への装飾は、隣接するセルが境界を共有する場合を意識してのものです。 セルのデータが name55 であるth要素への装飾などを操作して、確認する事が出来ます。


7.気を付ける点

要素の選択

th要素td要素の違いは、意味の他に描画と使える属性です。この内、描画はスタイルシートで対応できます。
どの要素を使うかは、よく考えて用いましょう。

セルの列

表(テーブル)に於いて、セルの列はセルの並びで表します。その上でセルには列, 行をまたがる機能があります。 つまりセルの位置となる列は、先のセルの指定次第で決まるという事なので注意が必要です。

内部規約として、セルの列, 行をまたがる機能の使用を禁止するのも一考かと思います。


8.付記