Menu

Semantyczny HTML: znaczniki, struktura strony i dostępność

Semantyczny HTML to wybieranie znaczników według tego, czym jest treść, a nie jak wygląda. Poznaj semantyczne znaczniki układu (header, nav, main, article, aside, footer), co dają czytnikom ekranu i wyszukiwarkom i jak sprawdzić strukturę strony.

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

Czym jest semantyczny HTML

Semantyczny HTML to wybieranie każdego znacznika według tego, czym treść jest: nawigacja trafia do <nav>, główna treść do <main>, wpis na blogu do <article>. Znaczniki wyglądają jak zwykłe pudełka, ale mówią przeglądarce, czytnikom ekranu i wyszukiwarkom, jaką rolę pełni każda część strony. Oto cała strona zbudowana z semantycznych znaczników układu, z każdym obrysowanym i podpisanym:

Usuń element <style>, a strona będzie wyglądać jak zwykły tekst, ale struktura nadal będzie na miejscu dla każdego, kto czyta kod, i dla oprogramowania, które go czyta, nie patrząc na piksele.

Semantyczne znaczniki układu

ZnacznikDo czego służyPunkt orientacyjny w czytniku ekranu
<header>Wstęp strony lub artykułu: logo, tytuł, autorbanner (tylko gdy nie jest wewnątrz article, aside, main, nav ani section)
<nav>Blok głównych linków nawigacyjnychnavigation
<main>Treść unikalna dla tej strony, raz na stronęmain
<article>Samodzielny fragment, który ma sens sam w sobie: wpis, komentarz, karta produktudomyślnie brak
<section>Tematyczna grupa treści z własnym nagłówkiemregion, tylko gdy ma dostępną nazwę
<aside>Powiązana treść obok głównego toku: pasek boczny, notkacomplementary
<footer>Informacje zamykające stronę lub artykuł: prawa autorskie, autor, linkicontentinfo (tylko na poziomie strony)

Każdy znacznik ma własną stronę z większą liczbą szczegółów: header, nav, section i footer. Ta strona opisuje, jak do siebie pasują.

Dlaczego nie po prostu div

Strona zbudowana wyłącznie z elementów <div> może wyglądać identycznie jak semantyczna. Różnica tkwi w tym, co mówi kod. Naciśnij przyciski, żeby obrysować elementy niosące znaczenie w każdej wersji:

Wersja z div znajduje 0, wersja semantyczna 4. To właśnie widzą technologie wspomagające: użytkownik czytnika ekranu na stronie semantycznej może od razu przeskoczyć do nawigacji albo głównej treści, a na stronie z div musi przeczytać wszystko po kolei. Nazwy klas takie jak class="nav" nic nie znaczą dla przeglądarki.

<div> pozostaje właściwym wyborem dla pudełek, które istnieją tylko do stylowania lub układu, jak opakowanie flex .cols w pierwszym przykładzie.

main, article i aside

<main> obejmuje to, co jest unikalne dla tej strony, i występuje raz. Wewnątrz niego <article> oznacza treść, która miałaby sens skopiowana samodzielnie na inną stronę, a <aside> treść powiązaną, którą można usunąć bez psucia artykułu:

Artykuł ma własne <header> i <footer>. Nie ograniczają się do poziomu strony: każdy otwiera albo zamyka najbliższy article lub section. Element <time datetime> podaje datę w formie czytelnej dla maszyn, a wyświetla ją w formie czytelnej dla ludzi.

Sprawdź strukturę nagłówków

Nagłówki to druga połowa struktury. Użytkownicy czytników ekranu często przechodzą przez stronę od nagłówka do nagłówka, więc poziomy powinny czytać się jak spis treści bez pominiętych poziomów. Ten skrypt wypisuje strukturę strony, na której działa:

h4 pod "Brewing" pomija poziom. Zmień go na h3, a struktura będzie czysta. Poziomy nagłówków wybieraj według struktury, a ich rozmiar zmieniaj w CSS, jeśli chcesz, żeby były większe albo mniejsze.

Więcej znaczników semantycznych

Semantyka to nie tylko układ. Te znaczniki na poziomie tekstu też niosą znaczenie:

ZnacznikZnaczenie
<strong>Ważny tekst (domyślnie pogrubiony)
<em>Akcent, emfaza (domyślnie kursywa)
<figure> i <figcaption>Obrazek, wykres albo przykład kodu z podpisem
<time datetime="...">Data lub godzina w formie czytelnej dla maszyn
<address>Dane kontaktowe autora strony lub artykułu
<mark>Wyróżniony tekst, na przykład wynik wyszukiwania
<abbr title="...">Skrót z pełną formą
<button>Coś, co wykonuje akcję

Najedź na skrót "W3C", żeby zobaczyć jego pełną formę w dymku.

Częste błędy

  • Używanie znacznika dla wyglądu. <blockquote> służy do cytatów, a nie do wcięć; <h3> to poziom nagłówka, a nie średniej wielkości pogrubiony tekst. Styl nadawaj w CSS.
  • Obejmowanie wszystkiego elementem <section>. Sekcja powinna mieć nagłówek i temat. Jeśli potrzebujesz pudełka do stylowania, użyj <div>.
  • Więcej niż jeden widoczny <main>. Trzymaj jeden na stronę i nigdy nie zagnieżdżaj go w <article>, <aside>, <header>, <nav> ani <footer>.
  • Umieszczanie każdej listy linków w <nav>. Zostaw go dla głównych bloków nawigacji, jak menu witryny czy spis treści. Kilka linków w stopce go nie potrzebuje.
  • Klikalne elementy <div>. Do <div onclick> nie da się dotrzeć klawiaturą. Używaj <button> do akcji i <a href> do nawigacji.

Najczęściej zadawane pytania

Czym jest semantyczny HTML?

Semantyczny HTML to kod, w którym każdy znacznik opisuje znaczenie swojej treści: <nav> dla nawigacji, <article> dla samodzielnego fragmentu, <button> dla przycisku. Przeglądarka, czytniki ekranu i wyszukiwarki rozumieją wtedy stronę bez zgadywania na podstawie nazw klas czy stylów.

Jakie są znaczniki semantyczne w HTML?

Znaczniki układu to <header>, <nav>, <main>, <article>, <section>, <aside> i <footer>. Inne popularne znaczniki semantyczne to <figure>, <figcaption>, <time>, <address>, <strong>, <em> oraz nagłówki od <h1> do <h6>.

Czy div jest elementem semantycznym?

Nie. <div> nie ma własnego znaczenia; to ogólne pudełko do stylowania i układu. Używaj go, gdy żaden znacznik semantyczny nie pasuje, a <header>, <main>, <nav> i pozostałych, gdy któryś pasuje.

Do czego służy znacznik aside?

<aside> zawiera treść związaną z główną treścią, ale niebędącą częścią jej toku: pasek boczny, blok podobnych linków, notkę słowniczkową albo wyróżniony cytat. Na poziomie strony czytniki ekranu pokazują go jako punkt orientacyjny complementary.

Ile elementów main może mieć strona?

Jeden widoczny <main> na stronę. Obejmuje treść unikalną dla tej strony i nie powinien znajdować się wewnątrz <header>, <nav>, <article>, <aside> ani <footer>.

Czy semantyczny HTML pomaga w SEO?

Pomaga wyszukiwarkom zrozumieć, która część strony jest główną treścią, która nawigacją i jak powiązane są nagłówki. Sam w sobie nie jest skrótem do wyższych pozycji, ale eliminuje zgadywanie i poprawia dostępność, a to i tak warto robić.

Ilustracja języków programowania w Coddy

Ucz się programowania z Coddy

ZACZNIJ