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

html要素


1.仕様

HTML要素 は、
HTML文書の
基点(ルート)を
表します。

html

基点 (the root of an HTML document)

種類

通常要素

カテゴリ

なし

使用できるコンテキスト
ルート要素

文書のドキュメント要素として使用できます。
複合文書内でサブドキュメントフラグメントが許可されている場所で使用できます。

コンテンツモデル
1つのhead要素と、それに続く1つのbody要素

1つのhead要素と、それに続く1つのbody要素が配置できます。

ただし HTML4.01 Frameset の場合は、ひとつの head要素と、それに続くひとつの frameset要素です。

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

開始タグは、html要素内の最初のものがコメントでない場合は省略可能です。

終了タグは、html要素の直後にコメントが続かない場合は省略可能です。

コンテンツ属性
グローバル属性のみ

manifest属性がありましたが、廃止されました。代わりにサービスワーカーを使用してください。

version属性がありましたが、廃止されました。不要です。完全に省いてください。

DOM インターフェイス
HTMLHtmlElement
  1. [Exposed=Window]
  2. interface HTMLHtmlElement : HTMLElement {
  3. [HTMLConstructor] constructor();
  4.  
  5. // also has obsolete members
  6. };
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
暗黙的="document" ARIAロール="No" aria-* 属性="No"

暗黙的な ARIAセマンティクスは、role=document です。

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

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

レンダリング
ブロックボックス
ページ
  1. html {
  2. display: block;
  3. }

CSS を大雑把に読むと、 ブロックレベルのブロックコンテナボックス(ブロックボックス)を生成します。 などになります。

説明
html要素は、HTML文書の基点(ルート)を表します。

html要素は、作成者は、ルート HTML要素に lang属性を指定して、ドキュメントの言語を指定する事が推奨されます。
これにより、音声合成ツールが使用する発音を決定したり、翻訳ツールが使用するルールを決定したりしやすくなります。

作成者は、ルートhtml要素にlang属性を指定して、文書(ドキュメント)の言語を指定することをお勧めします。
これは、使用する発音を決定する音声合成ツール、使用する規則を決定する翻訳ツールなどを支援します。

  1. <!DOCTYPE html>
  2. <html lang="ja">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>html要素の例 - (Example of html element) | 離珠のHTMLでしぃ!</title>
  6. </head>
  7. <body>
  8. <h1>html要素の例</h1>
  9. <p>この例の html要素は、ドキュメントの言語が日本語であることを宣言しています。</p>
  10. </body>
  11. </html>

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

参照元
参照元
JSONデータ
JSON形式での、データのイメージです。
  1. {
  2. "html": {
  3. "check": "2024-09-01",
  4. "group": "Page",
  5. "element": "O O (HEAD,BODY) -- the root of an HTML document. (Normal elements.) [None] --",
  6. "attlist": {"%Global;": ""},
  7. "comment": "基点 (the root of an HTML document)",
  8. "point": "HTML文書の基点(ルート)を表します。",
  9. "description": [
  10. "作成者は、ルート HTML要素に lang属性を指定して、ドキュメントの言語を指定する事が推奨されます。",
  11. "これにより、音声合成ツールが使用する発音を決定したり、翻訳ツールが使用するルールを決定したりしやすくなります。",
  12. ],
  13. "kind": "Normal",
  14. "categories": "None",
  15. "used": "%Root",
  16. "contentmodel": "HTML (HEAD,BODY)",
  17. "contentmodelsupplement": "ただし HTML4.01 Frameset の場合は、ひとつの head要素と、それに続くひとつの frameset要素です。",
  18. "tag": [
  19. "O",
  20. "O",
  21. ],
  22. "tagsupplement": [
  23. "開始タグは、html要素内の最初のものがコメントでない場合は省略可能です。",
  24. "終了タグは、html要素の直後にコメントが続かない場合は省略可能です。",
  25. ],
  26. "attributes": "Global",
  27. "attributessupplement": [
  28. "manifest属性がありましたが、廃止されました。代わりにサービスワーカーを使用してください。",
  29. "version属性がありましたが、廃止されました。不要です。完全に省いてください。",
  30. ],
  31. "dominterface": "HTMLHtmlElement",
  32. "rendering": "Page",
  33. "reference": [
  34. {
  35. "title": "HTML Living Standard. 4.1.1 The html element",
  36. "href": "https://html.spec.whatwg.org/multipage/semantics.html#the-html-element",
  37. "heading": "HTML Living Standard. 4.1.1 The html element",
  38. "sub": "Last Updated 27 August 2024",
  39. },
  40. {
  41. "title": "HTML Living Standard. 15 Rendering 15.3.2 The page",
  42. "href": "https://html.spec.whatwg.org/multipage/rendering.html#the-page",
  43. "heading": "HTML Living Standard. 15 Rendering 15.3.2 The page",
  44. "sub": "Last Updated 27 August 2024",
  45. },
  46. {
  47. "title": "HTML 5.2 W3C Recommendation. 4.1.1 The html element. W3C Recommendation, 14 December 2017.",
  48. "href": "https://www.w3.org/TR/2017/REC-html52-20171214/semantics.html#the-html-element",
  49. "heading": "HTML 5.2 W3C 勧告. 4.1.1 The html element",
  50. "sub": "W3C勧告、2017年12月14日",
  51. },
  52. {
  53. "title": "HTML 5.2 W3C Recommendation. 10.3.2. The page. W3C Recommendation, 14 December 2017.",
  54. "href": "https://www.w3.org/TR/2017/REC-html52-20171214/rendering.html#the-page",
  55. "heading": "HTML 5.2 W3C 勧告. 10.3.2. The page",
  56. "sub": "W3C勧告、2017年12月14日",
  57. },
  58. {
  59. "title": "HTML 5.1 W3C Recommendation. 4.1.1 The html element. W3C Recommendation, 1 November 2016.",
  60. "href": "https://www.w3.org/TR/2016/REC-html51-20161101/semantics.html#the-html-element",
  61. "heading": "HTML 5.1 W3C 勧告. 4.1.1 The html element",
  62. "sub": "W3C勧告、2016年11月1日",
  63. },
  64. {
  65. "title": "HTML 5.1 W3C Recommendation. 10.3.2. The page. W3C Recommendation, 1 November 2016.",
  66. "href": "https://www.w3.org/TR/2016/REC-html51-20161101/rendering.html#the-page",
  67. "heading": "HTML 5.1 W3C 勧告. 10.3.2. The page",
  68. "sub": "W3C勧告、2016年11月1日",
  69. },
  70. {
  71. "title": "HTML 5 W3C Recommendation. 4.1.1 The html element. W3C Recommendation, 28 October 2014.",
  72. "href": "https://www.w3.org/TR/2014/REC-html5-20141028/semantics.html#the-html-element",
  73. "heading": "HTML 5 W3C 勧告. 4.1.1 The html element",
  74. "sub": "W3C勧告、2014年10月28日",
  75. },
  76. {
  77. "title": "HTML 5 W3C Recommendation. 10.3.2. The page. W3C Recommendation, 28 October 2014.",
  78. "href": "https://www.w3.org/TR/2014/REC-html5-20141028/rendering.html#the-page",
  79. "heading": "HTML 5 W3C 勧告. 10.3.2. The page",
  80. "sub": "W3C勧告、2014年10月28日",
  81. },
  82. {
  83. "title": "HTML 4.01 Specification W3C Recommendation. 7.3 The HTML element. W3C Recommendation 24 December 1999.",
  84. "href": "https://www.w3.org/TR/html401/struct/global.html#h-7.3",
  85. "heading": "HTML 4.01 Specification W3C 勧告. 7.3 The HTML element",
  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": "Hypertext Markup Language - 2.0. November 1995.",
  96. "href": "https://www.ietf.org/rfc/rfc1866.txt",
  97. "heading": "Hypertext Markup Language - 2.0",
  98. "sub": "November 1995",
  99. },
  100. {
  101. "title": "Hypertext Markup Language (HTML). June 1993.",
  102. "href": "https://www.w3.org/MarkUp/draft-ietf-iiir-html-01.txt",
  103. "heading": "Hypertext Markup Language (HTML)",
  104. "sub": "June 1993",
  105. },
  106. {
  107. "title": "MDN Web Docs. HTML <html>: The HTML Document / Root element.",
  108. "href": "https://developer.mozilla.org/ja/docs/Web/HTML/Element/html",
  109. "heading": "MDN Web Docs. HTML <html>: HTML 文書 / ルート要素",
  110. },
  111. ],
  112. "version": {
  113. "first": "HTML",
  114. "latest": "HTML Living Standard",
  115. },
  116. }
  117. }

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

最終確認日

2024-09-01


2.使用できるコンテキスト

html要素 は、
HTML文書の
ルートとなる
要素です。

html要素が使用できるコンテキスト(Context文脈)は、文書のドキュメント要素として、または複合文書内でサブドキュメントフラグメントが許可されている場合です。

逆に、あるべき箇所にhtml要素がある(タグが省略されている)ものとして処理されるので、その点は注意が必要かと思います。

(文書のドキュメント要素は、その文書を親とする要素が存在する場合はその要素であり、そうでない場合はnullである。)

HTML文書の基点

  1. html開始タグ
  2. の前
  3. <h2>html要素の外側</h2>
  4. 外側のテキスト
  5. <html lang="ja">
  6. <head>
  7. <meta charset="UTF-8">
  8. <title>離珠のHTMLでしぃ!</title>
  9. </head>
  10. <body>
  11. 内側の先頭テキスト
  12. <p>このページの言語は、
  13. "<code id="icdJs001">〇〇</code>"です。</p>
  14. <p>このページの表題は、
  15. "<code id="icdJs002">〇〇</code>"です。</p>
  16. <script>
  17. document.addEventListener("DOMContentLoaded", function() {
  18. document.getElementById("icdJs001").textContent = document.documentElement.lang;
  19. document.getElementById("icdJs002").textContent = document.title;
  20. });
  21. </script>
  22. 内側の<br>末尾テキスト
  23. </body>
  24. </html>
  25. html終了タグの後に
  26. <br><a href="./pahtml.htm" target="_parent">html要素</a>へのリンクも追加してみました。

この例では、<iframe src="./omittedhtml.htm"></iframe> とHTMLファイルを埋め込んで提示しています。このファイルの内容は、html要素の記述できる箇所をイメージする為の例として記述しています。 html要素開始タグは5行目に記述してありますが、ここでは1行目のテキストの前に、html要素開始タグ, head要素開始タグ, head要素終了タグ, body要素開始タグが省略されているものとして扱われています。 なので、3行目のh2要素開始タグ, h2要素終了タグは適切な記述として扱われ、レンダリングされています。改行コードも1つの空白として扱われています。 そして、5~10行目のHTMLのタグですが、不適切な記述としてそれなりに扱われているようにみえます。完全に無効なタグなら、要素コンテンツにあたる物は表示されるのですが、8行目のtitle要素のコンテンツは表示されていません。 しかし、10行目のbody要素開始タグの後にあるテキストは改行されていません。

スクリプトで処理してみると、html要素, title要素などは適切に処理されている様です。別途行った簡単な動作確認では、どこに配置されているかではなくて、最初にあるhtml要素lang属性, title要素コンテンツが採用されているだけの様です。html要素html要素の子孫として配置しても、祖先のhtml要素lang属性がない場合は採用されていました。

使用している外部ファイルへのリンクは、「./omittedhtml.htm」です。


3.コンテンツモデル

html要素 は、
head要素と
body要素を
配置できます。

html要素子や子孫としてどのようなコンテンツ(Content内容) が含まれなければならないかというと、1つのhead要素と、それに続く1つのbody要素です。尚、head要素body要素ともにタグの省略が可能なので、ソース上の見た目には注意かと思います。

尚 HTML4.01 Frameset でなら、1つのhead要素と、それに続く1つのframeset要素がこの順番で配置されます。

document
html
head
body
  1. <!DOCTYPE html>
  2. <html lang="ja">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>離珠のHTMLでしぃ!</title>
  6. </head>
  7. <body>
  8. </body>
  9. </html>

html要素は、1つのhead要素とそれに続く1つのbody要素を配置できます。というか、その配置で固定です。

ツリーで表すと、html要素が基点で、その下にhead要素body要素があります。

  1. <!DOCTYPE html>
  2. <html lang="ja">
  3. <meta charset="UTF-8">
  4. <title>離珠のHTMLでしぃ!</title>
  5. <p>タグが省略された例</p>
  6. </html>

head要素body要素ともにタグの省略が可能であり、タグの省略であって要素自体は存在しています。ここでのp要素は、html要素の孫の位置に配置されていて子の位置ではありません。スクリプトやスタイルシートの指定では注意が必要です。


4.コンテンツ属性

html要素 は、
グローバル属性のみ
設定できます。

html要素に指定することができる属性は、グローバル属性のみです。

lang属性を指定して、明記する事が推奨されます。

manifest属性がありましたが、削除されました。代わりにサービスワーカーを使用してください。 詳細は、Service Workers Nightlyで確認して下さい。

version属性がありましたが、削除されました。不要です。完全に省いてください。 もしくは、カスタムデータ属性として data-version とでも置き換えるのが良いでしょう。

lang属性

  1. <html lang="ja">

lang属性 は、要素言語を設定するグローバル属性です。 編集不可の要素では記述されている言語を、また編集可能な要素ではユーザーが書き込むべき言語を定義します。
その値は、有効な言語タグ、または空の文字列である必要があります。属性空の文字列に設定すると、1次言語が不明であることを示します。これらの属性要素から省略されている場合、この要素言語は、その最も近い祖先要素言語を保持している要素言語と同じです。

この例では、"ja"(日本語) をhtml要素開始タグに指定しています。html要素lang属性を省略すると、html要素祖先要素がないので1次言語が不明となります。その為、html要素lang属性を記述する事をお勧めします。


5.DOM インターフェイス

documentの
プロパティである
documentElementは、
ルート要素である
html要素を返します。

html要素を JavaScript などで操作するには、documentのプロパティであるdocumentElementを用います。これは、ルート要素であるhtml要素を返します。この時に取得できる値の形式はHTMLHtmlElement インターフェイスです。

documentquerySelector()メソッド等を用いる事も考えられますが、このプロパティで充分でしょう。

このページの言語は、
"〇〇"です。

  1. <p>このページの言語は、
  2. "<code id="icdJs501">〇〇</code>"です。</p>
  3. <script>
  4. document.addEventListener("DOMContentLoaded", function() {
  5. document.getElementById("icdJs501").textContent = document.documentElement.lang;
  6. });
  7. </script>

html要素lang属性の値を取得する例です。例示で表示する為に、HTML文書の読み込みと解析が終了した時に処理するコードとしています。


6.レンダリング

  1. html {
  2. display: block;
  3. }

html要素ユーザーエージェントレベルスタイルシートデフォルトでは、displayプロパティの値は block であり、ブロックレベルブロックコンテナボックス(ブロックボックス) を生成します。

html要素はルート要素であり、それを含むブロックフォーマットコンテキストがない為、新しいブロックフォーマットコンテキストを確立します。
ルート要素が存在する包含ブロックは、初期包含ブロックと呼ばれる長方形です。これは、ビューポート (連続メディアの場合) またはページ領域 (ページメディアの場合) のサイズを持ちます。
ルート要素の背景がキャンバスの背景になり、その背景のペイント領域がキャンバス全体をカバーするように拡張されます。 ルート要素はこの背景を再度ペイントしません。つまり、背景の使用値は透明です。

html要素は、フォーマットコンテキストに参加しないhead要素と、ブロックレベルbody要素だけを配置します。なのでここでは、インラインフォーマットコンテキストは確立されません。body要素は、包含ブロックhtml要素ブロックボックスでありhtml要素が新しいブロックフォーマットコンテキストを確立している為、そのまま継続します。

ブロックフォーマット
コンテキスト
コンテンツ

ボックスで表すと、html要素が存在して、その中にbody要素があります。

html要素は、ブロックレベルブロックコンテナであるボックスを生成します。html要素はルート要素であり、それを含むブロックフォーマットコンテキストがない為、新しいブロックフォーマットコンテキストを確立します。html要素は、ブロックレベルのボックスを生成するbody要素だけを配置します。なのでここでは、インラインフォーマットコンテキストは確立されません。

head要素は、フォーマットコンテキストに参加しない, ボックステキストシーケンスを生成しないので、ここでは現れません。

尚、この説明は各要素のレンダリングに関する指定が既定値での話で、個々にスタイルを指定した場合はこの限りではありません。

リセットCSS

  1. html {
  2. line-height: 1.15;
  3. -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
  4. }

これは、リセットCSSnormalize.csshtml要素の部分を抜き出したものです。

line-heightは、すべてのブラウザで行の高さを修正します。

-webkit-tap-highlight-colorは、iOS で方向を変更した後のフォントサイズの調整を防止します。

html要素の高さ

ルート要素 (html要素) が存在する包含ブロックは、初期包含ブロックと呼ばれる長方形です。これは、ビューポート (連続メディアの場合) またはページ領域 (ページメディアの場合) のサイズを持ちます。

  1. <!DOCTYPE html>
  2. <html lang="ja">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>html要素の高さ - [離珠のHTMLでしぃ!]</title>
  6. <style>
  7. html { border: solid 1px #ff0000; box-sizing: border-box; }
  8. html { border: solid 1px #0000ff; box-sizing: border-box; }
  9. </style>
  10. </head>
  11. <body>
  12. <a href="./pahtml.htm" target="_parent">html要素</a>のページに戻るリンクです。
  13. <h1 title="Height of html element.">html要素の高さ</h1>
  14. <p>Height of html element.</p>
  15. <hr>
  16. <form onchange="document.documentElement.style.height = document.getElementById('iseJs001').value;">
  17. このhtml要素の高さは、<select id="iseJs001">
  18. <option value="auto">auto</option>
  19. <option value="100%">100%</option>
  20. <option value="100vh">100vh</option>
  21. </select>です。
  22. </form>
  23. <form onchange="document.body.style.height = document.getElementById('iseJs002').value;">
  24. このbody要素の高さは、<select id="iseJs002">
  25. <option value="auto">auto</option>
  26. <option value="100%">100%</option>
  27. <option value="100vh">100vh</option>
  28. <option value="calc(100% - 16px)">calc(100% - 16px)</option>
  29. <option value="calc(100vh - 18px)">calc(100vh - 18px)</option>
  30. </select>です。
  31. </form>
  32. <form onchange="document.documentElement.style.fontSize = document.getElementById('iseJs003').value + 'em';">
  33. この文字の大きさは、<input id="iseJs003" type="number" max="5.0" min="0.5" step="0.5" value="1.0">emです。
  34. </form>
  35. </body>
  36. </html>

この例では、<iframe src="./heighthtml.htm">HTMLファイルを埋め込んで提示しています。

html要素の高さについて体感する為に、cssでhtml要素, body要素の枠を視覚化して、JavaScriptで cssを動的に設定して表示するというものです。ついでに余白とか線の幅など、幅や高さを扱う時の注意点も、表しています。

使用している外部ファイルへのリンクは、「./heighthtml.htm」です。

インラインレベルのコンテンツのみを含む

  1. <!DOCTYPE html>
  2. <html lang="ja">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>html要素でインラインフォーマットコンテキストを確立 - head要素, title要素, body要素のdisplayプロパティの値を全て inline にして、html要素をインラインレベルのコンテンツのみを含む状態にし、インラインフォーマットコンテキストを確立させる。 - [離珠のHTMLでしぃ!]</title>
  6. <style>
  7. head, title, body { display: inline; }
  8. body { border: double 3px #ff0000; }
  9. </style>
  10. </head>
  11. <body>
  12. <a href="./pahtml.htm" target="_parent">html要素</a>のページに戻ります。
  13. </body>
  14. </html>

この例では、<iframe src="./inlinetitle.htm">HTMLファイルを埋め込んで提示しています。

head要素, title要素, body要素displayプロパティの値を全て inline にした場合は、インラインレベルのコンテンツのみを含むブロックコンテナボックスなので、新しいインラインフォーマットコンテキストを確立します。次に、要素は、すべてのインラインコンテンツをラップするルートインラインボックスも生成します。

使用している外部ファイルへのリンクは、「./inlinetitle.htm」です。

背景

ルート要素の背景がキャンバスの背景になり、その背景のペイント領域がキャンバス全体をカバーするように拡張されます。ただし、画像は、ルート要素のみに対してペイントされているかのように、ルート要素に対してサイズと位置が設定されます。(つまり、ルート要素と同様に背景配置領域が決定されます。)ルート要素はこの背景を再度ペイントしません。つまり、背景の使用値は透明です。

ルート要素がhtml要素であるドキュメントの場合で、ルート要素の background-image計算値none で、その background-colortransparent である場合は、ユーザーエージェントは代わりに その要素の子要素のbody要素背景プロパティを用います。そのbody要素背景プロパティ使用値はそれらの初期値であり、伝播された値はルート要素で指定されたかのように扱われます。HTMLドキュメントの作成者は、html要素ではなくbody要素のキャンバスの背景を指定することをお勧めします。

この内容の参照元は、「CSS Backgrounds and Borders Module Level 3」です。


7.気を付ける点

タグの省略の扱い

html要素タグは省略可能です。html要素に記述できるhead要素, body要素タグは省略可能です。なのでソースコードを読む時にタグが省略されている可能性も意識して読む必要があります。
また記述する側としては、html要素開始タグを省略するという事はlang属性を省略するという事でもある事を留意して記述する必要があると思います。

これに関して重要な事は、意図せずhtml要素開始タグの前にテキスト等を記述してしまうと、その前にhtml要素開始タグが省略されているものとして処理されてしまうという事です。以降に記述されているhtml要素開始タグは不適切なタグとしてそれなりに処理されます。意図しない表示になった時に原因を探し易くする為にも、出来るだけタグは省略しない方が良いと思います。

  1. <!DOCTYPE html>
  2. <title>離珠のHTMLでしぃ!</title>
  3. <h1>離珠のHTMLでしぃ!</h1>
  4. タグを省略しています。

タグの記述を省略しているだけで、要素は存在しています。

基点要素の扱い

html要素基点要素であるので、その性質は文書全体の内容に影響します。性質は、属性の指定や CSS の指定により指定できます。

呼称

html要素とは、要素名が「html」である要素の事です。HTMLの要素」と言った場合は、HTML言語の個々の「要素」を指し、body要素, head要素, html要素など特定の要素を示すものではありません。

このサイトでは、英字の大文字, 小文字でそれらを区別して表現するようにしています。(仕様のポイントを記した吹き出しでは、要素名のつづりを見分ける意図で大文字を使用しています。) 尚、HTML言語では、タグ名の大文字, 小文字の区別をしません。HTML構文では、タグ名は、外部要素のタグ名であっても、すべて小文字に変換すると要素のタグ名と一致する小文字と大文字の任意の組み合わせで記述できます。<html><HTML><Html> も同じです。

CSSリセット

  1. html {
  2. line-height: 1.15;
  3. -webkit-text-size-adjust: 100%;;
  4. }

normalize.css というリセットCSS の一部です。すべてのブラウザで行の高さを修正します。 iOSで向きを変更した後のフォントサイズの調整を防止します。
詳細は理解していないのですが、いろいろとバグ等の対応も含んでいる様なので、リセットCSSを利用する事をお勧めします。

使用できるARIAの役割なし

この要素は、「使用できるARIAの役割、状態、およびプロパティ」で「役割なし、またはaria-*属性」とあります。この「役割なし」という用語が含まれている場合は、作成者が暗黙のARIAセマンティクスまたはHTML要素のネイティブセマンティクスを上書きしてはならないことを示しています。つまりHTML要素の暗黙のARIAセマンティクスである role=documentを明示したいといって <html lang="ja" role="document"> などと記述してはいけないという事です。


8.付記