Ich würde empfehlen, h1
überall zu verwenden. Vergiss h2
durch h6
.
Zurück in HTML4 wurden die 6 Überschriftsebenen verwendet, um die Abschnitte implizit zu definieren. Zum Beispiel,
<body>
<h1>This is a top-level heading</h1>
<p>some content here</p>
<h2>This is the heading of a subsection</h2>
<p>content in the subsection</p>
<h2>Another subsection begins here</h2>
<p>content</p>
<h1>another top-level heading</h1>
Mit dem section
Element können Sie jetzt die Abschnitte explizit definieren, anstatt sich auf die impliziten Abschnitte verlassen zu müssen, die von Ihrem Browser erstellt wurden, um die verschiedenen Überschriftsebenen zu lesen. Ein mit HTML5 ausgestatteter Browser weiß, dass alles in einem section
Element um eine Ebene in der Dokumentübersicht "herabgestuft" wird. So wird zum Beispiel a section > h1
semantisch wie ein behandelt h2
, a section > section > h1
ist wie ein h3
usw.
Was verwirrend ist , dass Browser STILL implizite Abschnitte erstellen auf der Grundlage der h2
- h6
Schriftsebenen, aber die h2
- h6
Elemente ihre Stile ändern sich nicht. Das bedeutet, dass ein h2
, egal in wie vielen Abschnitten es verschachtelt ist, immer noch wie ein erscheint h2
(zumindest in Webkit). Dies wäre verwirrend, wenn Sie h2
beispielsweise eine Überschrift der Stufe 4 sein sollten.
Mischen h2
- h6
mit section
führt zu sehr unerwarteten Ergebnissen. Bleiben Sie einfach bei h1
und verwenden Sie section
, um explizite Abschnitte zu erstellen.
<body>
<header>
<h1>This is a top-level heading</h1>
<p>you may optionally wrap this p and the h1 above it inside a header element.
the header element doesn't affect the doc outline.
the section element does, however.</p>
</header>
<section>
<h1>even though this is an h1, the browser "treats it" like an h2
because it's inside an explicit section.
(it got demoted).</h1>
<p>content in the subsection</p>
</section>
<section>
<h1>Another subsection begins here, also treated like an h2</h1>
<p>content</p>
<h2>This is misleading. it is semantically treated like an h3.</h2>
<p>that is because after an h1, an h2 is demoted one level. the h1 above is
already a "level 2" heading, so this h2 becomes a "level 3" heading.</p>
<section>
<h1>just do this instead.</h1>
<p>it is treated like an h3 because it's in a section within a section.
(It got demoted twice.)</p>
</section>
</section>
<h1>another top-level heading</h1>
Darüber hinaus können Sie das <main>
Element verwenden . Dieses Element enthält nur seitenspezifische Informationen und sollte keinen Inhalt enthalten, der auf der gesamten Website wiederholt wird, z. B. Navigationslinks, Kopf- / Fußzeilen der Website usw. Möglicherweise ist nur ein <main>
Element in der Website vorhanden <body>
. Ihre Lösung kann also so einfach sein:
<header>
<h1>Site title</h1>
<nav>...</nav>
</header>
<main>
<h1>Page title</h1>
<p>page content</p>
</main>