Menu

HTML Header: das header-Tag, Beispiele und Sticky Header

Das <header>-Element enthält die Einleitung einer Seite oder eines Abschnitts: ein Logo, einen Titel, Navigation, eine Autorenzeile. Hier lernst du, wie du einen Website-Header baust, wie sich <header> von <head> und Überschriften unterscheidet, wie du es in Artikeln einsetzt und wie du es sticky machst.

Diese Seite enthält ausführbare Editoren - bearbeiten, ausführen und Ausgabe sofort sehen.

So erstellst du einen Header in HTML

Pack den oberen Teil deiner Seite (Logo, Name der Website, Hauptmenü) in ein <header>-Element. Es ist ein Block ohne Standardaussehen, ein paar Zeilen CSS machen daraus also eine Leiste:

margin-inline-end: auto am Logo schiebt Menü und Button ans andere Ende der Leiste. Entferne das <style>-Element, und du hast immer noch einen Header: Das Tag macht ihn dazu, nicht der dunkle Hintergrund.

header vs. head vs. h1

Drei Namen, die ähnlich klingen und verschiedene Aufgaben haben:

ElementWoSichtbarWie viele
<head>Direkt in <html>, vor <body>Nein: enthält <title>, <meta>, <link>Genau einer
<header>In <body>Ja: einleitender Inhalt einer Seite oder eines AbschnittsBeliebig viele
<h1> bis <h6>Überall in <body>Ja: eine ÜberschriftBeliebig viele

Der <head> unten legt den Seitentitel fest, den ein Browser in seinem Tab anzeigt. Alles, was du in der Vorschau sehen kannst, kommt aus <body>:

Ein Header enthält oft eine Überschrift, muss aber nicht, und eine Überschrift braucht keinen Header um sich herum.

Header in Artikeln

<header> leitet seinen nächstgelegenen Artikel oder Abschnitt ein, nicht nur die Seite. Eine Liste von Blogbeiträgen, in der jeder Beitrag seinen eigenen Header hat, ist gültig und verbreitet:

Für Screenreader wird nur der Header auf Seitenebene (einer, der nicht in article, aside, main, nav oder section steht) zur Landmark banner. Die Artikel-Header sind einfache Gruppen, du landest also nicht bei mehreren Bannern.

position: sticky hält den Header oben, während der Inhalt darunter scrollt. Scroll im Kasten unten:

Drei Details sorgen dafür, dass es funktioniert: top: 0 (ohne Versatz bewirkt sticky nichts), eine Hintergrundfarbe (sonst scheinen die Zeilen durch) und z-index, damit positionierter Inhalt nicht darüber gezeichnet wird. Auf einer echten Seite ist der scrollende Kasten die Seite selbst, der Header steht also direkt in <body>.

Ein Header mit position: fixed bleibt auch an seinem Platz, verlässt aber den Seitenfluss, der Inhalt rutscht also darunter und braucht oben einen Innenabstand. Sticky behält seinen Platz im Layout.

Was in einen Header darf

Ein Header kann fast jeden Inhalt enthalten: Überschriften, ein Logo-Bild, ein <nav>, ein Suchformular, einen Button. Er darf keinen weiteren <header> und keinen <footer> enthalten und nicht in einem <footer>, einer <address> oder einem anderen <header> stehen.

<header>
  <a href="/"><img src="logo.svg" alt="Acme home"></a>
  <nav aria-label="Main">...</nav>
  <form role="search">...</form>
</header>

Wenn das Logo ein Link zur Startseite ist, sollte sein alt-Text sagen, wohin der Link führt („Acme home“), denn genau das sagt ein Screenreader an.

Häufige Fehler

  • <header> mit <head> verwechseln. Metadaten kommen in <head>; sichtbarer Inhalt nie.
  • <header> für jede Überschrift verwenden. Eine einzelne Überschrift braucht keinen Header drumherum. Nimm <header>, wenn es eine Gruppe einleitender Inhalte gibt.
  • Ein Sticky Header ohne Hintergrund. Der Seitentext scrollt sichtbar hindurch. Setz einen background.
  • Sticky, das nicht klebt. Ein Vorfahre mit overflow: hidden oder overflow: auto wird zum Scroll-Kasten für sticky, der Header klebt also in diesem Kasten (oder gar nicht). Prüf die Vorfahren.
  • Das Menü der Website in ein <div> im Header setzen. Nimm <nav>, damit Screenreader-Nutzer direkt dorthin springen können.

Häufig gestellte Fragen

Was ist das header-Tag in HTML?

<header> ist ein semantisches Element für einleitende Inhalte: ein Website-Logo und ein Menü oben auf der Seite oder Titel und Autorenzeile oben in einem Artikel. Es ist ein normaler Block ohne Standardstyling.

Was ist der Unterschied zwischen head und header in HTML?

<head> ist der unsichtbare Teil des Dokuments mit <title>, <meta>-Tags und Links zu Stylesheets, und davon gibt es genau einen. <header> ist sichtbarer Inhalt in <body>, und eine Seite kann mehrere haben.

Darf eine Seite mehr als ein header-Element haben?

Ja. Eine Seite hat meistens einen Website-Header, und jedes <article> oder <section> kann einen eigenen <header> für seinen Titel und seine Metainformationen haben. Nur ein Header, der nicht in article, aside, main, nav oder section steht, zählt für Screenreader als Banner der Seite.

Gehört die nav in den header?

Sie kann dort stehen, und oft tut sie das, wenn das Hauptmenü oben auf der Seite sitzt. <nav> außerhalb von <header> ist ebenfalls gültig; entscheide nach deinem Layout.

Wie bleibt ein Header beim Scrollen oben?

Gib ihm position: sticky; top: 0; plus eine Hintergrundfarbe und einen z-index, damit der Inhalt darunter durchscrollt. Sticky funktioniert nur, solange das Elternelement des Headers höher ist als der Header, und ein Vorfahre mit overflow: hidden verhindert, dass er an der Seite kleben bleibt.

Coddy programming languages illustration

Lerne mit Coddy zu programmieren

LOS GEHT'S