W Starożytnym Egipcie hieroglify miały scisle okreslone znaczenie - każdy symbol pelnil konkretna funkcje. Podobnie jest z semantycznym HTML - każdy znacznik niesie że soba informacje o roli i znaczeniu treści, co jest kluczowe dla technologii wspomagajacych.
Czytniki ekranowe (screen readers) nie "widza" strony - odczytuja strukturę HTML. Gdy uzywasz
<div> na wszystko, czytnik nie wie, co jest nawigacja, co naglowkiem, a co trescia główna.1<!-- ŹLE - "zupa z divow" -->
2<div class="header">
3 <div class="nav">
4 <div class="nav-item">Strona główna</div>
5 <div class="nav-item">O nas</div>
6 </div>
7</div>
8<div class="content">
9 <div class="title">Witaj w muzeum</div>
10 <div class="text">Opis wystawy...</div>
11</div>
12
13<!-- DOBRZE - semantyczny HTML -->
14<header>
15 <nav aria-label="Nawigacja główna">
16 <ul>
17 <li><a href="/">Strona główna</a></li>
18 <li><a href="/about">O nas</a></li>
19 </ul>
20 </nav>
21</header>
22<main>
23 <h1>Witaj w muzeum</h1>
24 <p>Opis wystawy...</p>
25</main>1<header> <!-- Nagłówek strony lub sekcji -->
2<nav> <!-- Nawigacja -->
3<main> <!-- Główna tresc strony (tylko jeden na stronę!) -->
4<article> <!-- Samodzielna tresc (post, artykul) -->
5<section> <!-- Tematyczna grupa treści -->
6<aside> <!-- Tresc poboczna (sidebar) -->
7<footer> <!-- Stopka strony lub sekcji -->Naglowki tworza strukturę dokumentu - czytniki ekranowe pozwalaja uzytkownikam nawigowac po naglowkach, wiec ich hierarchia musi być poprawna.
1<!-- ŹLE - pominiety poziom h2 -->
2<h1>Muzeum Egipskie</h1>
3<h3>Wystawy stale</h3> <!-- Powinno być h2! -->
4<h4>Skarby faraonów</h4> <!-- Powinno być h3! -->
5
6<!-- DOBRZE - poprawna hierarchia -->
7<h1>Muzeum Egipskie</h1>
8<h2>Wystawy stale</h2>
9<h3>Skarby faraonów</h3>
10<h3>Mumie krolewskie</h3>
11<h2>Wystawy czasowe</h2>
12<h3>Zloce Tutanchamona</h3>1<!-- Nawigacja jako lista - czytnik powie "lista, 4 elementy" -->
2<nav>
3 <ul>
4 <li><a href="/">Strona główna</a></li>
5 <li><a href="/exhibitions">Wystawy</a></li>
6 <li><a href="/tickets">Bilety</a></li>
7 <li><a href="/contact">Kontakt</a></li>
8 </ul>
9</nav>
10
11<!-- Lista definicji -->
12<dl>
13 <dt>Skarabeusz</dt>
14 <dd>Swiety zuk symbolizujacy odrodzenie</dd>
15 <dt>Ankh</dt>
16 <dd>Symbol zycia wiecznego</dd>
17</dl>Semantyczne znaczniki HTML automatycznie tworza tzw. landmarks (punkty orientacyjne), po których uzytkownicy czytników ekranowych mogą szybko nawigowac:
| Znacznik HTML | Landmark Role | Opis | |:---|:---|:---| |
<header> | banner | Nagłówek strony |
| <nav> | navigation | Nawigacja |
| <main> | main | Główna tresc |
| <aside> | complementary | Tresc uzupelniajaca |
| <footer> | contentinfo | Stopka |
| <section> | region* | Sekcja tematyczna |
| <form> | form* | Formularz |*Wymaga atrybutu
aria-label lub aria-labelledby.1<!DOCTYPE html>
2<html lang="pl">
3<head>
4 <meta charset="UTF-8">
5 <title>Muzeum Starożytnego Egiptu</title>
6</head>
7<body>
8 <header>
9 <h1>Muzeum Starożytnego Egiptu</h1>
10 <nav aria-label="Nawigacja główna">
11 <ul>
12 <li><a href="/">Strona główna</a></li>
13 <li><a href="/exhibitions">Wystawy</a></li>
14 </ul>
15 </nav>
16 </header>
17
18 <main>
19 <article>
20 <h2>Wystawa: Skarby Tutanchamona</h2>
21 <p>Odkryj niesamowite artefakty...</p>
22 <figure>
23 <img src="mask.jpg" alt="Zlota maska posmiertna Tutanchamona">
24 <figcaption>Maska posmiertna Tutanchamona, ok. 1323 p.n.e.</figcaption>
25 </figure>
26 </article>
27 </main>
28
29 <aside aria-label="Informacje dodatkowe">
30 <h2>Godziny otwarcia</h2>
31 <p>Pn-Pt: 9:00-17:00</p>
32 </aside>
33
34 <footer>
35 <p>Muzeum Starożytnego Egiptu 2024</p>
36 </footer>
37</body>
38</html>Unikaj tych częstych pomyłek:
1<!-- ŹLE: div zamiast button -->
2<div onclick="submit()">Wyślij</div>
3
4<!-- DOBRZE: natywny button -->
5<button onclick="submit()">Wyślij</button>
6
7<!-- ŹLE: span jako nagłówek -->
8<span class="big-text">Ważny tytuł</span>
9
10<!-- DOBRZE: właściwy nagłówek -->
11<h2>Ważny tytuł</h2>
12
13<!-- ŹLE: br do tworzenia odstępów -->
14<br><br><br>
15
16<!-- DOBRZE: CSS margin/padding -->
17<p style="margin-top: 2rem;">Tekst z odstępem</p>Mozesz sprawdzic semantykę swojej strony za pomocą:
Semantyczny HTML to fundament dostępności - tak jak solidne fundamenty piramidy zapewniaja jej trwalosc na tysiaclecia, tak poprawna semantyka zapewnia, że strona będzie dostępna dla wszystkich użytkowników. Każdy element HTML powinien odpowiadac swojej roli - nagłówek powinien być nagłówkiem, nawigacja nawigacją, a przycisk przyciskiem.