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

見出し要素
(h1 - h6)


1.仕様

H1, H2, H3, H4, H5, H6要素は、
文書中の見出し(構造)を
表します。

h1, h2, h3, h4, h5, h6

見出し (heading)

種類

通常要素

使用できるコンテキスト
  • ヘディングコンテンツを受け入れる要素
  • hgroup要素

ヘディングコンテンツを受け入れる要素のコンテンツとして、使用できます。

ヘディングコンテンツを受け入れる要素は、body要素, section要素, nav要素, aside要素, article要素, header要素, footer要素, main要素, li要素, dd要素, caption要素, td要素, form要素, fieldset要素, search要素, blockquote要素, figure要素, figcaption要素, div要素, dialog要素, details要素 です。

タグの省略

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

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

align属性がありましたが、廃止されました。代わりに CSS を使用してください。

DOM インターフェイス
HTMLHeadingElement
  1. [Exposed=Window]
  2. interface HTMLHeadingElement : 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
暗黙的="heading" ARIAロール="あり" aria-* 属性="GlobalAny"

暗黙的な ARIAセマンティクスは、role=heading です。
role=heading、aria-level = 要素のタグ名の数字

作成者が要素に指定してもよい ARIAロール値は、 none, presentation, tab です。

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

レンダリング
ブロックボックス
セクション
  1. h1, h2, h3, h4, h5, h6 {
  2. display: block;
  3. font-weight: bold;
  4. unicode-bidi: isolate;
  5. }
  6. h1 {
  7. margin-block: 0.67em;
  8. font-size: 2.00em;
  9. }
  10. h2 {
  11. margin-block: 0.83em;
  12. font-size: 1.50em;
  13. }
  14. h3 {
  15. margin-block: 1.00em;
  16. font-size: 1.17em;
  17. }
  18. h4 {
  19. margin-block: 1.33em;
  20. font-size: 1.00em;
  21. }
  22. h5 {
  23. margin-block: 1.67em;
  24. font-size: 0.83em;
  25. }
  26. h6 {
  27. margin-block: 2.33em;
  28. font-size: 0.67em;
  29. }

CSS を大雑把に読むと、 フローレイアウトに配置されたときにブロックレベルのブロックコンテナボックス(ブロックボックス)を生成します。 などになります。

説明
h1要素は、セクションの見出しを表します。見出しには、H1 (最も重要) から H6 (最も重要ではない) までの 6 つのレベルがあります。

h1要素は、これらの要素は見出しを表します。 見出しの見出しレベルが低いほど、見出しに含まれる祖先セクションが少なくなります。
アウトラインは、ツリー順に並べられたドキュメント内のすべての見出しです。
アウトラインは、目次を作成する場合など、ドキュメントのアウトラインを生成するために使用する必要があります。 インタラクティブな目次を作成する場合、エントリによってユーザーが関連する見出しにジャンプする必要があります。
ドキュメントに 1 つ以上の見出しがある場合、アウトライン内の少なくとも 1 つの見出しの見出しレベルが 1 である必要があります。
アウトライン内の別の見出しリードに続く各見出しの見出しレベルは、リードの見出しレベルより小さい、等しい、または 1 大きい必要があります。

  1. <!DOCTYPE html>
  2. <html lang="ja">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>見出し要素の例 - (Example of heading elements) | 離珠のHTMLでしぃ!</title>
  6. </head>
  7. <body>
  8. <h1>見出し要素の例</h1>
  9. <section>
  10. <hgroup>
  11. <h2>テーマ1</h2>
  12. <p>テーマ1a</p>
  13. </hgroup>
  14. テーマ1(テーマ1a)の内容を記述します。
  15. </section>
  16. <section>
  17. <h2>テーマ2</h2>
  18. <section>
  19. <h3>テーマ2a</h3>
  20. テーマ2aの内容を記述します。
  21. </section>
  22. <section>
  23. <h3>テーマ2b</h3>
  24. テーマ2bの内容を記述します。
  25. </section>
  26. </section>
  27. </body>
  28. </html>

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

JSONデータ
JSON形式での、データのイメージです。
  1. {
  2. "h1": {
  3. "check": "2024-09-01",
  4. "group": "Section",
  5. "element": "- - (%Phrasing)* -- heading (Normal elements.) [Flow|Heading|Palpable] --",
  6. "attlist": {"%Global;": ""},
  7. "comment": "見出し (heading)",
  8. "point": "セクションの見出しを表します。見出しには、H1 (最も重要) から H6 (最も重要ではない) までの 6 つのレベルがあります。",
  9. "description": [
  10. "これらの要素は見出しを表します。 見出しの見出しレベルが低いほど、見出しに含まれる祖先セクションが少なくなります。",
  11. "アウトラインは、ツリー順に並べられたドキュメント内のすべての見出しです。",
  12. "アウトラインは、目次を作成する場合など、ドキュメントのアウトラインを生成するために使用する必要があります。 インタラクティブな目次を作成する場合、エントリによってユーザーが関連する見出しにジャンプする必要があります。",
  13. "ドキュメントに 1 つ以上の見出しがある場合、アウトライン内の少なくとも 1 つの見出しの見出しレベルが 1 である必要があります。",
  14. "アウトライン内の別の見出しリードに続く各見出しの見出しレベルは、リードの見出しレベルより小さい、等しい、または 1 大きい必要があります。",
  15. ],
  16. "kind": "Normal",
  17. "categories": [
  18. "Flow",
  19. "Heading",
  20. "Palpable",
  21. ],
  22. "used": [
  23. "parent (%Heading)*",
  24. "hgroup",
  25. ],
  26. "contentmodel": "h1 (%Phrasing)*",
  27. "tag": [
  28. "-",
  29. "-",
  30. ],
  31. "attributes": "Global",
  32. "attributessupplement": [
  33. "align属性がありましたが、廃止されました。代わりに CSS を使用してください。",
  34. ],
  35. "dominterface": "HTMLHeadingElement",
  36. "rendering": [
  37. "Heading",
  38. "Bidirectional",
  39. ],
  40. "reference": [
  41. {
  42. "title": "HTML Living Standard. 4.3.6 The h1, h2, h3, h4, h5, and h6 elements.",
  43. "href": "https://html.spec.whatwg.org/multipage/sections.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements",
  44. "heading": "HTML Living Standard. 4.3.6 The h1, h2, h3, h4, h5, and h6 elements",
  45. "sub": "Last Updated 27 August 2024",
  46. },
  47. {
  48. "title": "HTML Living Standard. 15 Rendering 15.3.6 Sections and headings.",
  49. "href": "https://html.spec.whatwg.org/multipage/rendering.html#sections-and-headings",
  50. "heading": "HTML Living Standard. 15 Rendering 15.3.6 Sections and headings",
  51. "sub": "Last Updated 27 August 2024",
  52. },
  53. {
  54. "title": "HTML 5.2 W3C Recommendation. 4.3.6 The h1, h2, h3, h4, h5, and h6 elements. W3C Recommendation, 14 December 2017.",
  55. "href": "https://www.w3.org/TR/2017/REC-html52-20171214/sections.html#the-h1-h2-h3-h4-h5-and-h6-elements",
  56. "heading": "HTML 5.2 W3C 勧告. 4.3.6 The h1, h2, h3, h4, h5, and h6 elements",
  57. "sub": "W3C勧告、2017年12月14日",
  58. },
  59. {
  60. "title": "HTML 5.2 W3C Recommendation. 10.3.7. Sections and headings.",
  61. "href": "https://www.w3.org/TR/2017/REC-html52-20171214/rendering.html#sections-and-headings",
  62. "heading": "HTML 5.2 W3C 勧告. 10.3.7. Sections and headings",
  63. "sub": "W3C勧告、2017年12月14日",
  64. },
  65. {
  66. "title": "HTML 5.1 W3C Recommendation. 4.3.6 The h1, h2, h3, h4, h5, and h6 elements. W3C Recommendation, 1 November 2016.",
  67. "href": "https://www.w3.org/TR/2016/REC-html51-20161101/sections.html#the-h1-h2-h3-h4-h5-and-h6-elements",
  68. "heading": "HTML 5.1 W3C 勧告. 4.3.6 The h1, h2, h3, h4, h5, and h6 elements",
  69. "sub": "W3C勧告、2016年11月1日",
  70. },
  71. {
  72. "title": "HTML 5.1 W3C Recommendation. 10.3.7. Sections and headings. W3C Recommendation, 1 November 2016.",
  73. "href": "https://www.w3.org/TR/2016/REC-html51-20161101/rendering.html#sections-and-headings",
  74. "heading": "HTML 5.1 W3C 勧告. 10.3.7. Sections and headings",
  75. "sub": "W3C勧告、2016年11月1日",
  76. },
  77. {
  78. "title": "HTML 5 W3C Recommendation. 4.3.6 The h1, h2, h3, h4, h5, and h6 elements. W3C Recommendation, 28 October 2014.",
  79. "href": "https://www.w3.org/TR/2014/REC-html5-20141028/sections.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements",
  80. "heading": "HTML 5 W3C 勧告. 4.3.6 The h1, h2, h3, h4, h5, and h6 elements",
  81. "sub": "W3C勧告、2014年10月28日",
  82. },
  83. {
  84. "title": "HTML 5 W3C Recommendation. 10.3.7 Sections and headings. W3C Recommendation, 28 October 2014.",
  85. "href": "https://www.w3.org/TR/2014/REC-html5-20141028/rendering.html#sections-and-headings",
  86. "heading": "HTML 5 W3C 勧告. 10.3.7 Sections and headings",
  87. "sub": "W3C勧告、2014年10月28日",
  88. },
  89. {
  90. "title": "HTML 4.01 Specification W3C Recommendation. 7.5.5 Headings: The H1, H2, H3, H4, H5, H6 elements. W3C Recommendation 24 December 1999.",
  91. "href": "https://www.w3.org/TR/html401/struct/global.html#h-7.5.5",
  92. "heading": "HTML 4.01 Specification W3C 勧告. 7.5.5 Headings: The H1, H2, H3, H4, H5, H6 elements",
  93. "sub": "W3C勧告1999年12月24日",
  94. },
  95. {
  96. "title": "HTML 3.2 Reference Specification. W3C Recommendation 14-Jan-1997.",
  97. "href": "https://www.w3.org/TR/2018/SPSD-html32-20180315/",
  98. "heading": "HTML 3.2 Reference Specification",
  99. "sub": "W3C勧告1997年1月14日",
  100. },
  101. {
  102. "title": "Hypertext Markup Language - 2.0. November 1995.",
  103. "href": "https://www.ietf.org/rfc/rfc1866.txt",
  104. "heading": "Hypertext Markup Language - 2.0",
  105. "sub": "November 1995",
  106. },
  107. {
  108. "title": "Hypertext Markup Language (HTML). June 1993.",
  109. "href": "https://www.w3.org/MarkUp/draft-ietf-iiir-html-01.txt",
  110. "heading": "Hypertext Markup Language (HTML)",
  111. "sub": "June 1993",
  112. },
  113. {
  114. "title": "MDN Web Docs. HTML <h1>-<h6>: The HTML Section Heading elements.",
  115. "href": "https://developer.mozilla.org/ja/docs/Web/HTML/Element/article",
  116. "heading": "<h1>-<h6>: HTML の見出し要素 - HTML: ハイパーテキストマークアップ言語 | MDN",
  117. },
  118. ],
  119. "version": {
  120. "first": "HTML",
  121. "latest": "HTML Living Standard",
  122. },
  123. }
  124. }

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

最終確認日

2024-09-01


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

見出し要素 は、
ヘディングコンテンツを
受け入れる要素と
hgroup要素に
配置できます。

h1要素などの見出しの要素(h1~h6)を使用できるコンテキスト(Context文脈)は、ヘディングコンテンツを受け入れる要素hgroup要素コンテンツとしてです。

h1要素は、ヘディングコンテンツでありフローコンテンツでもあります。よって、コンテンツモデルフローコンテンツでありヘディングコンテンツを受け入れる要素に配置できます。つまりコンテンツモデルヘディングコンテンツを除くフローコンテンツという要素があって、それには配置できないという事です。

ヘディングコンテンツコンテンツの一部としては配置できないけれども、他のフローコンテンツコンテンツの一部として配置できる要素は、以下の各要素です。


3.コンテンツモデル

見出し要素 は、
フレージングコンテンツを
配置できます。

h1要素などの見出しの要素(h1~h6)の子や子孫としてどのようなコンテンツ(Content内容) が含まれなければならないかというと、0 以上のフレージングコンテンツです。


4.コンテンツ属性

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

h1要素などの見出しの要素(h1~h6)に指定することができる属性は、グローバル属性のみ、設定できます。

align属性がありましたが、廃止されました。代わりに CSS を使用してください。


5.DOM インターフェイス

h1要素 などの
見出しの要素(h1~h6)を
直接表す
プロパティは
ありません。

h1要素などの見出しの要素(h1~h6)を JavaScript などで操作するには、documentgetElementById()メソッドを用いてid属性で指定して、h1要素を取得する方法があります。この時に取得できる値の形式はHTMLHeadingElement インターフェイスです。

他には、documentquerySelectorAll()メソッドを用いて要素セレクタh1と指定して用いるとか、name属性があればdocumentgetElementsByName()メソッドを用いるとか、状況, 目的によりいろいろあります。

見出しの色

この例示の文字の色は、です。
  1. <h3 id="ih3Js501">見出しの色</h3>
  2. <form onchange="document.getElementById("ih3Js501").style = document.getElementById("iseJs502").value;">この例示の文字の色は、<select id="iseJs502">
  3. <option value="color: inherit;">継承する</option>
  4. <option value="color: red;"></option>
  5. <option value="color: blue;"></option>
  6. </select>です。
  7. </form>

h3要素id属性を指定して、そのid属性で要素を取得する例です。例示では、style属性のcssの記述を選択して設定する処理としています。例示で動的に表示する為に、フォームの内容が変更された時に処理するコードとしています。

この例は、h3要素を扱う例なので、実際には別の用途で別の属性や内容を取得, 設定する処理となると思います。その場合は少々別の知識が必要になります。


6.レンダリング

  1. h1, h2, h3, h4, h5, h6 {
  2. display: block;
  3. unicode-bidi: isolate;
  4. }

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

ブロックフォーマットコンテキストに参加して、ブロックフォーマットコンテキストを継承, 確立します。もし、インラインフォーマットコンテキストに参加するコンテンツのみを含む場合は、新しいインラインフォーマットコンテキストを確立します。次に、すべてのインラインコンテンツをラップするルートインラインボックスも生成します。

unicode-bidi は、置換されない要素のレンダリングでの Bidirectional text(双方向テキスト) に於いての期待される仕様の様です。

  1. h1 {
  2. margin-block-start: 0.67em;
  3. margin-block-end: 0.67em;
  4. font-size: 2.00em;
  5. font-weight: bold;
  6. }
  7. h2 {
  8. margin-block-start: 0.83em;
  9. margin-block-end: 0.83em;
  10. font-size: 1.50em;
  11. font-weight: bold;
  12. }
  13. h3 {
  14. margin-block-start: 1.00em;
  15. margin-block-end: 1.00em;
  16. font-size: 1.17em;
  17. font-weight: bold;
  18. }
  19. h4 {
  20. margin-block-start: 1.33em;
  21. margin-block-end: 1.33em;
  22. font-size: 1.00em;
  23. font-weight: bold;
  24. }
  25. h5 {
  26. margin-block-start: 1.67em;
  27. margin-block-end: 1.67em;
  28. font-size: 0.83em;
  29. font-weight: bold;
  30. }
  31. h6 {
  32. margin-block-start: 2.33em;
  33. margin-block-end: 2.33em;
  34. font-size: 0.67em;
  35. font-weight: bold;
  36. }
  37. :is(article, aside, nav, section) h1 {
  38. margin-block-start: 0.83em;
  39. margin-block-end: 0.83em;
  40. font-size: 1.50em;
  41. }
  42. :is(article, aside, nav, section) :is(article, aside, nav, section) h1 {
  43. margin-block-start: 1.00em;
  44. margin-block-end: 1.00em;
  45. font-size: 1.17em;
  46. }
  47. :is(article, aside, nav, section) :is(article, aside, nav, section) :is(article, aside, nav, section) h1 {
  48. margin-block-start: 1.33em;
  49. margin-block-end: 1.33em;
  50. font-size: 1.00em;
  51. }
  52. :is(article, aside, nav, section) :is(article, aside, nav, section) :is(article, aside, nav, section) :is(article, aside, nav, section) h1 {
  53. margin-block-start: 1.67em;
  54. margin-block-end: 1.67em;
  55. font-size: 0.83em;
  56. }
  57. :is(article, aside, nav, section) :is(article, aside, nav, section) :is(article, aside, nav, section) :is(article, aside, nav, section) :is(article, aside, nav, section) h1 {
  58. margin-block-start: 2.33em;
  59. margin-block-end: 2.33em;
  60. font-size: 0.67em;
  61. }

見出しの要素(h1~h6)は、h1 (最も重要) から h6 (最も重要ではない) までの 6 つのレベルがあります。このレベルで文字のサイズが異なります。それ以外のレンダリングでの違いはありません。 尚、レベルを文字のサイズで表しているのと区分(セクション)の深度も文字のサイズで表している訳で、 スタイルシートでの見出しの要素(h1~h6)の装飾は、その辺も考えていろいろ拘ると見易いと思います。

装飾例(テキスト)

====================
見出し要素を用いない例
====================

***************
見出し1
***************

---------------
見出し2
---------------

=== 見出し3 ===

*** 見出し4 ***

--- 見出し5 ---
  1. ====================<br>
  2. 見出し要素を用いない例<br>
  3. ====================<br>
  4. <br>
  5. ***************<br>
  6. 見出し1<br>
  7. ***************<br>
  8. <br>
  9. ---------------<br>
  10. 見出し2<br>
  11. ---------------<br>
  12. <br>
  13. === 見出し3 ===<br>
  14. <br>
  15. *** 見出し4 ***<br>
  16. <br>
  17. --- 見出し5 ---<br>
  18. <br>

見出し要素を使わないというか、要素の既定値であるスタイルシートによる装飾を用いないで考える装飾という事です。 装飾として文字(記号)を書き込むので、フォントによりデザインが異なってきます。その為、囲むデザインは行ごとにズレるので避けています。

装飾例(style属性可)

背景色

  1. <h3 style="color: #000000; background-color: rgba(204,255,255,0.8); box-shadow: 0.25em 0.3125em 0.0625em 0.0625em rgba(204,255,255,0.8); border-radius: 0.3em; margin: 0; padding: 0.3em;">背景色</h3>

色だけで表している例です。文字の色と要素の背景の色, ページの色の組み合わせに注意しましょう。

上下に1本線

.
  1. <h3 style="border-style: solid; border-width: 0.2em 0; margin: 0;">上下に1本線</h3>

上下の1本線を、境界線で表した例です。

上下に2本線

  1. <h3 style="border-style: double; border-width: 0.4em 0; margin: 0;">上下に2本線</h3>

上下の2本線を、境界線で表した例です。

上下に点線

  1. <h3 style="border-style: dotted; border-width: 0.3em 0; margin: 0;">上下に点線</h3>

上下の点線を、境界線で表した例です。

上下に破線

  1. <h3 style="border-style: dashed; border-width: 0.3em 0; margin: 0;">上下に破線</h3>

上下の破線を、境界線で表した例です。

上下に凸線

  1. <h3 style="border-style: ridge; border-width: 0.5em 0; margin: 0;">上下に凸線</h3>

上下の凸線を、境界線で表した例です。

上下に凹線

  1. <h3 style="border-style: groove; border-width: 0.5em 0; margin: 0;">上下に凹線</h3>

上下の凹線を、境界線で表した例です。

左右に1本線

  1. <h3 style="display: inline-block; border-style: solid; border-width: 0 0.5em; margin: 0; padding: 0 0.5em;">左右に1本線</h3>

左右の1本線を、境界線で表した例です。

左右に2本線

  1. <h3 style="display: inline-block; border-style: double; border-width: 0 0.5em; margin: 0; padding: 0 0.5em;">左右に2本線</h3>

左右の2本線を、境界線で表した例です。

左に1本線

  1. <h3 style="border-left: solid 0.3em; margin: 0; padding: 0 0.3em;">左に1本線</h3>

左の1本線を、境界線で表した例です。

左に2本線

  1. <h3 style="border-left: double 0.3em; margin: 0; padding: 0 0.3em;">左に2本線</h3>

左の2本線を、境界線で表した例です。

左と下に実線

  1. <h3 style="border-style: solid; border-width: 0 0 0.1em 0.3em; margin: 0; padding: 0.1em 0.3em;">左と下に実線</h3>

左と下の実線を、境界線で表した例です。

左に2本線,下に1本線

  1. <h3 style="border-left: double 0.3em; border-bottom: solid 0.1em; margin: 0; padding: 0.1em 0.3em;">左に2本線,下に1本線</h3>

左の2本線と下の1本線を、境界線で表した例です。

左に1本線,下に2本線

  1. <h3 style="border-left: solid 0.3em; border-bottom: double 0.2em; margin: 0; padding: 0.1em 0.3em;">左に1本線,下に2本線</h3>

左の1本線と下の2本線を、境界線で表した例です。

左に1本線,下に破線

  1. <h3 style="border-left: solid 0.3em; border-bottom: dashed 0.1em; margin: 0; padding: 0.1em 0.3em;">左に1本線,下に破線</h3>

左の1本線と下の破線を、境界線で表した例です。

左に1本線,下に点線

  1. <h3 style="border-left: solid 0.3em; border-bottom: dotted 0.1em; margin: 0; padding: 0.1em 0.3em;">左に1本線,下に点線</h3>

左の1本線と下の点線を、境界線で表した例です。

四辺に1本線で左は太く

  1. <h3 style="border-style: solid; border-width: 0.05em 0.05em 0.05em 0.3em; margin: 0; padding: 0.1em 0.3em;">四辺に1本線で左は太く</h3>

四辺の1本線で左は太くを、境界線で表した例です。

左に2本線で他は1本線

  1. <h3 style="border-style: solid solid solid double; border-width: 0.05em 0.05em 0.05em 0.3em; margin: 0; padding: 0.1em 0.3em;">左に2本線で他は1本線</h3>

四辺の左に2本線で他は1本線を、境界線で表した例です。

罫線の角を丸める

  1. <h3 style="border-style: solid solid solid double; border-width: 0.05em 0.05em 0.05em 0.3em; border-radius: 0 0.8em 0.8em 0.8em; margin: 0; padding: 0.1em 0.3em;">罫線の角を丸める</h3>

四辺の左に2本線で他は1本線の罫線の角を丸めるを、境界線で表した例です。

罫線をグラデーション

  1. <h3 style="border-style: solid solid solid double; border-width: 0.05em 0.05em 0.05em 0.5em; border-image: linear-gradient( to right, blue 11%, rgba(0,0,0,0) 11%, rgba(0,0,0,0) 22%, blue 22%, blue 33%, rgba(0,0,0,0) 66%) 33%; margin: 0; padding: 0.1em 0.3em;">罫線をグラデーション</h3>

四辺の左に2本線で他は1本線の罫線をグラデーションを、境界線で表した例です。
左の線を2本線で指定しているのは、色(グラデーション)に対応していないブラウザを意識しての事で、グラデーションに対応していれば1本線でも同じです。

左に1本線で
他は要素が凸って見える線

  1. <h3 style="border-style: outset outset outset solid; border-width: 0.2em 0.2em 0.2em 0.3em; border-color: #ffffff #ffffff #ffffff #000000; margin: 0; padding: 0.1em 0.3em;">左に1本線で<br>他は要素が凸って見える線</h3>

四辺の左に1本線で他は凸線を、境界線で表した例です。

左に2本線で
他は要素が凸って見える線

  1. <h3 style="border-style: outset outset outset double; border-width: 0.2em 0.2em 0.2em 0.3em; border-color: #ffffff #ffffff #ffffff #000000; margin: 0; padding: 0.1em 0.3em;">左に2本線で<br>他は要素が凸って見える線</h3>

四辺の左に2本線で他は凸線を、境界線で表した例です。

左に1本線と背景色

  1. <h3 style="border-left: 0.5em solid; color: #000000; background-color: rgba(221,221,221,0.8); margin: 0; padding: 0.1em 0.3em;">左に1本線と背景色</h3>

左の1本線と背景を、境界線と背景色で表した例です。
尚、色の組み合わせを意識して、背景色だけでなく文字色も指定しています。

罫線と背景をグラデーション

  1. <h3 style="border-style: solid solid solid double; border-width: 0.05em 0.05em 0.05em 0.5em; border-image: linear-gradient( to right, blue 11%, rgba(0,0,0,0) 11%, rgba(0,0,0,0) 22%, blue 22%, blue 33%, rgba(0,0,0,0) 66%) 33%; color: #000000; background: linear-gradient( to right, rgba(221,221,221,0.8) 66%, rgba(0,0,0,0)); margin: 0; padding: 0.1em 0.3em;">罫線と背景をグラデーション</h3>

四辺の左に2本線で他は1本線の罫線をグラデーションで背景もグラデーションを、境界線と背景色で表した例です。
左の線を2本線で指定しているのは、色(グラデーション)に対応していないブラウザを意識しての事で、グラデーションに対応していれば1本線でも同じです。
グラデーション自体にも色々な表現があるので、いろいろ指定してみて下さい。

影を付ける

  1. <h3 style="border-style: solid solid solid double; border-width: 0.05em 0.05em 0.05em 0.3em; border-radius: 0 0.8em 0.8em 0.8em; border-color: #9999ff; color: #000000; background-color: #ffffcc; box-shadow: 0.25em 0.25em 0.25em 0.05em #ffccff; margin: 0; padding: 0.1em 0.3em;">影を付ける</h3>

影を表した例です。
分かり易いように、影だけでなく他の箇所も色付けしています。

ステッチ

  1. <h3 style="border: dashed 1px #ffffff; background-color: #9999ff; box-shadow: 0 0 0 5px #9999ff; margin: 0.5em; padding: 0.1em 0.3em;">ステッチ</h3>

ステッチを表した例です。
影を用いて装飾している為、影の分の領域を意識する必要があります。

幅を指定

  1. <h3 style="border-style: double; border-width: 0.2em 0; width: 6.5em; margin: 0; padding: 0.1em 1.0em; text-align: center; box-sizing: border-box;">幅を指定</h3>

幅を指定した例です。

幅を指定

  1. <h3 style="border-style: double; border-width: 0 0.2em; width: 6.5em; margin: 0; padding: 0.1em 1.0em; text-align: center; box-sizing: border-box;">幅を指定</h3>

幅を指定した例です。

inline-block

  1. <h3 style="border-style: double; border-width: 0 0.2em; display: inline-block; margin: 0; padding: 0.1em 1.0em;">inline-block</h3>

inline-blockを指定した例です。

輪郭線を付ける

  1. <h3 style="border-style: solid; border-width: 0.3em; margin: 0.5em; padding: 0.1em; outline: solid 0.05em; outline-offset: 0.2em;">輪郭線を付ける</h3>

輪郭線を付ける

  1. <h3 style="border: solid 1px rgba(0,0,0,0); border-image: linear-gradient( currentColor, currentColor) 33% / 0.1em / 0.5em; outline: solid 0.3em; margin: 0.8em; padding: 0.1em;">輪郭線を付ける</h3>

装飾例(疑似要素使用)

疑似要素で表現

  1. .ch3Pseudo601 { position: relative; border-style: solide; border-width: 0.3eme; margin: 0.5eme; padding: 0.1em 0.3em; }
  2. .ch3Pseudo601::before { content: ''; position: absolute; top: -0.5em; left: -0.45em; border-style: solid; border-width: 0.05em; width: calc(100% + 0.8em); height: calc(100% + 0.9em); }

疑似要素(Pseudo-elements)を用いて、罫線を多く表した例です。
疑似要素が上にかぶさっている為、要素のコンテンツにクリックなどのアクセスが出来ない点に注意が必要です。

疑似要素で表現

  1. .ch3Pseudo602 { position: relative; border: solid 0.1em #000000; border-radius: 1.28rem; margin: 0.5em; padding: 0.1em 0.3em; color: #000000; background-color: #ffffff; }
  2. .ch3Pseudo602::after { display: block; content: ""; position: absolute; bottom: -8px; left: 1em; border-top: none; border-right: inherit; border-bottom: inherit; border-left: none; width: 16px; height: 16px; background-color: transparent; -webkit-transform: skewX(25deg) rotateZ(45deg); transform: skewX(25deg) rotateZ(45deg); background-image: linear-gradient( to left top, rgba(255,255,255,1.0), rgba(255,255,255,1.0) 55%, transparent 55%, transparent ); }

疑似要素(Pseudo-elements)を用いて、吹き出しを表した例です。

疑似要素で表現

  1. .ch3Pseudo603 { position: relative; margin: 0.5em; padding: 1.0em 0.5em; border-style: double; border-width: 0 0.1875em; }
  2. .ch3Pseudo603::before { content: ''; position: absolute; top: 0.5em; left: -0.5em; border-top: double 0.1875em; width: calc(100% + 1em); height: 0.5em; }
  3. .ch3Pseudo603::after { content: ''; position: absolute; left: -0.5em; bottom: 0.2em; border-top: double 0.1875em; width: calc(100% + 1em); height: 0.5em; }

疑似要素(Pseudo-elements)を用いて、格子状を表した例です。

装飾例(カウンタ)

マーカー

マーカーのサンプルです。

マーカー

マーカーのサンプルです。

  1. <div style="list-style: decimal inside;">
  2. <h3 style="display: list-item;">マーカー</h3>
  3. <p>マーカーのサンプルです。</p>
  4. <h3 style="display: list-item;">マーカー</h3>
  5. <p>マーカーのサンプルです。</p>
  6. </div>

list-item と指定しての、マーカーのサンプルです。

マーカー

マーカーのサンプルです。

マーカー

マーカーのサンプルです。

  1. .ch3Counter601 { counter-reset: nh3Counter601; }
  2. .ch3Counter601 h3::before { counter-increment: nh3Counter601; content: counter(nh3Counter601) "."; }

疑似要素(Pseudo-elements)を用いての、マーカーのサンプルです。


7.気を付ける点

CSSリセット

  1. h1 {
  2. font-size: 2.00em;
  3. margin: 0.67em 0;
  4. }

normalize.css というリセットCSS の一部で、Chrome、Firefox、Safariの section要素および article要素のコンテキスト内の h1要素のフォントサイズとマージンを修正します。 (別記の「レンダリング」にも記述してある、セクションの階層による振る舞いを、ないものとする考えです。)
詳細は理解していないのですが、いろいろとバグ等の対応も含んでいる様なので、リセットCSSを利用する事をお勧めします。


8.付記