Menu

Nagłówek strony w HTML: znacznik header, przykłady i sticky

Element <header> zawiera wstęp strony lub sekcji: logo, tytuł, nawigację, podpis autora. Dowiedz się, jak zbudować nagłówek strony, czym <header> różni się od <head> i nagłówków h1 do h6, jak używać go w artykułach i jak go przykleić.

Na tej stronie są działające edytory: edytuj, uruchamiaj i od razu zobacz wynik.

Jak zrobić nagłówek strony w HTML

Otocz górę strony (logo, nazwę strony, główne menu) elementem <header>. To blok bez domyślnego wyglądu, więc kilka linijek CSS zmienia go w pasek:

margin-inline-end: auto na logo spycha menu i przycisk na drugi koniec paska. Usuń element <style>, a nadal będziesz mieć header: to znacznik czyni go nagłówkiem, a nie ciemne tło.

header a head a h1

Trzy nazwy, które brzmią podobnie, a robią co innego:

ElementGdzieWidocznyIle
<head>Bezpośrednio w <html>, przed <body>Nie: zawiera <title>, <meta>, <link>Dokładnie jeden
<header>Wewnątrz <body>Tak: treść wprowadzająca strony lub sekcjiDowolnie wiele
Od <h1> do <h6>Gdziekolwiek w <body>Tak: nagłówek tekstowyDowolnie wiele

<head> poniżej ustawia tytuł strony, który przeglądarka pokazuje na karcie. Wszystko, co widać w podglądzie, pochodzi z <body>:

Header często zawiera nagłówek tekstowy, ale nie musi, a nagłówek tekstowy nie potrzebuje wokół siebie headera.

Header w artykułach

<header> wprowadza najbliższy artykuł lub sekcję, nie tylko stronę. Lista wpisów na blogu, w której każdy wpis ma własny header, jest poprawna i popularna:

Dla czytników ekranu tylko header na poziomie strony (taki, który nie jest wewnątrz article, aside, main, nav ani section) staje się punktem orientacyjnym banner. Headery artykułów to zwykłe grupy, więc nie powstaje kilka banerów.

Przyklejony header (sticky)

position: sticky trzyma header u góry, podczas gdy treść pod nim się przewija. Przewiń zawartość pudełka poniżej:

Działa to dzięki trzem szczegółom: top: 0 (bez przesunięcia sticky nic nie robi), kolor tła (inaczej wiersze prześwitują) i z-index, żeby pozycjonowana treść nie malowała się na nim. Na prawdziwej stronie przewijanym pudełkiem jest sama strona, więc header stoi bezpośrednio w <body>.

Header z position: fixed też zostaje na miejscu, ale wypada z przepływu strony, więc treść wsuwa się pod niego i potrzebuje paddingu u góry. Sticky zachowuje swoje miejsce w układzie.

Co może się znaleźć w headerze

Header może zawierać prawie każdą treść: nagłówki, obrazek z logo, <nav>, formularz wyszukiwania, przycisk. Nie może zawierać innego <header> ani <footer> i nie może znajdować się w <footer>, <address> ani innym <header>.

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

Gdy logo jest linkiem do strony głównej, jego tekst alt powinien mówić, dokąd prowadzi link ("Acme home"), bo to właśnie ogłasza czytnik ekranu.

Częste błędy

  • Mylenie <header> z <head>. Metadane trafiają do <head>; widoczna treść nigdy.
  • <header> przy każdym nagłówku tekstowym. Sam nagłówek nie potrzebuje opakowania w header. Używaj <header>, gdy jest grupa treści wprowadzającej.
  • Przyklejony header bez tła. Przewijany tekst strony prześwituje przez niego. Ustaw background.
  • Sticky, który się nie przykleja. Przodek z overflow: hidden lub overflow: auto staje się pudełkiem przewijania dla sticky, więc header przykleja się w tym pudełku (albo wcale). Sprawdź przodków.
  • Menu strony w <div> wewnątrz headera. Użyj <nav>, żeby użytkownicy czytników ekranu mogli do niego przeskoczyć.

Najczęściej zadawane pytania

Czym jest znacznik header w HTML?

<header> to element semantyczny na treść wprowadzającą: logo strony i menu u góry albo tytuł i podpis autora na początku artykułu. To zwykły blok bez domyślnego stylu.

Czym różni się head od header w HTML?

<head> to niewidoczna część dokumentu z <title>, znacznikami <meta> i linkami do arkuszy stylów, i jest dokładnie jeden. <header> to widoczna treść wewnątrz <body>, a strona może mieć ich kilka.

Czy strona może mieć więcej niż jeden element header?

Tak. Strona zwykle ma jeden nagłówek strony, a każdy <article> lub <section> może mieć własny <header> na tytuł i metadane. Tylko header, który nie jest wewnątrz article, aside, main, nav ani section, jest dla czytników ekranu banerem strony.

Czy nav powinien być wewnątrz header?

Może i często jest, gdy główne menu znajduje się u góry strony. Umieszczenie <nav> poza <header> też jest poprawne; wybierz to, co pasuje do twojego układu.

Jak sprawić, żeby header został u góry podczas przewijania?

Nadaj mu position: sticky; top: 0; oraz kolor tła i z-index, żeby treść przewijała się pod nim. Sticky działa tylko wtedy, gdy rodzic headera jest od niego wyższy, a przodek z overflow: hidden nie pozwala mu przykleić się do strony.

Ilustracja języków programowania w Coddy

Ucz się programowania z Coddy

ZACZNIJ