Dostępna ścieżka nawigacji (breadcrumbs)
Zaktualizowano 14 października 2026 · 4 min czytania
Breadcrumbs pokazują, gdzie w sklepie znajduje się strona: Strona główna › Kobiety › Buty › Botki. Są proste, ale często budowane jako zwykły tekst z separatorami, które czytniki ekranu odczytują na głos. Ta strona pokazuje wzorzec z APG. Należy do serii dostępne wzorce interfejsu.
Kiedy używać breadcrumbs
APG definiuje ścieżkę nawigacji jako „listę linków do stron nadrzędnych bieżącej strony w porządku hierarchicznym”. Warto jej użyć w serwisach z kilkoma poziomami – kategorie, podkategorie, strony produktów, artykuły pomocy. Zwykle umieszcza się ją przed główną treścią. W płaskim serwisie o dwóch poziomach dodaje niewiele.
Kryteria WCAG
WCAG nie wymaga breadcrumbs, ale jeśli są, obowiązują następujące kryteria:
- 1.3.1 Informacje i relacje (A): ścieżka to lista w landmarku nawigacji, a nie luźny tekst.
- 2.4.5 Wiele dróg (AA): breadcrumbs mogą być jednym ze sposobów znajdowania stron, obok menu, wyszukiwarki i mapy strony.
- 2.4.4 Cel łącza (w kontekście) (A): teksty linków to nazwy stron.
- 4.1.2 Nazwa, rola, wartość (A) i 1.4.1 Użycie koloru (A): bieżąca strona jest oznaczona w kodzie, a nie tylko kolorem.
- 3.2.3 Spójna nawigacja (AA): ścieżka pojawia się w tym samym miejscu na każdej stronie.
- 2.5.8 Rozmiar celu (minimum) (AA): krótkie linki breadcrumbs na telefonie potrzebują odpowiedniego rozmiaru lub odstępów.
- 1.4.10 Dopasowanie do ekranu (AA): długie ścieżki zawijają się na wąskich ekranach.
Przykład kodu
<nav aria-label="Breadcrumb" class="breadcrumb">
<ol>
<li><a href="/pl/">Strona główna</a></li>
<li><a href="/pl/kobiety">Kobiety</a></li>
<li><a href="/pl/kobiety/buty">Buty</a></li>
<li><a href="/pl/kobiety/buty/botki" aria-current="page">Botki</a></li>
</ol>
</nav>
<style>
.breadcrumb ol { display: flex; flex-wrap: wrap; list-style: none; padding: 0; }
.breadcrumb li + li::before {
content: "";
display: inline-block;
margin: 0 .5em;
width: .4em; height: .4em;
border-top: 1px solid currentColor;
border-right: 1px solid currentColor;
transform: rotate(45deg); /* strzałka narysowana obramowaniem: nie ma czego czytać */
}
.breadcrumb [aria-current="page"] { font-weight: 600; text-decoration: none; }
</style>
Co określa APG:
- Ścieżka „jest zawarta w regionie landmarku nawigacji”, opisanym przez
aria-labellubaria-labelledby. - „Link do bieżącej strony ma
aria-currentustawione napage.” Jeśli bieżąca strona nie jest linkiem, tylko zwykłym tekstem,aria-currentjest opcjonalne. - Przykład APG układa linki w listę uporządkowaną, co informuje użytkowników czytników ekranu, ile jest poziomów, a separatory dodaje w CSS – przekrzywionym obramowaniem – więc „nie są reprezentowane w drzewie dostępności”.
Użycie nav daje landmark, do którego można przeskoczyć; etykieta „Breadcrumb” odróżnia go od głównej nawigacji i nawigacji w stopce.
Obsługa klawiaturą
APG określa obsługę klawiatury dla breadcrumbs jako „nie dotyczy”: to zwykłe linki.
| Klawisz | Funkcja |
|---|---|
| Tab / Shift + Tab | Przechodzi przez linki ścieżki |
| Enter | Otwiera link |
| Nawigacja po landmarkach w czytniku ekranu | Przeskakuje do nawigacji „Breadcrumb” |
Typowe błędy w sklepach internetowych
- Separatory w HTML („/”, „»”, „>”), które czytniki ekranu odczytują między każdym linkiem.
divz linkami beznavi bez listy albonavbez etykiety obok dwóch innych nieopisanych elementównav.- Bieżąca strona oznaczona wyłącznie szarym kolorem, bez
aria-currentani innej różnicy wizualnej. - Ścieżka odzwierciedlająca drogę przeglądania („Wróć do wyników wyszukiwania”) na jednych stronach, a drzewo kategorii na innych, co łamie spójność.
- Skrócone ścieżki na telefonie, które chowają kategorie nadrzędne bez możliwości ich pokazania.
- Maleńkie linki ściśnięte obok siebie na telefonie.
- Dane strukturalne breadcrumbs niezgodne z widoczną ścieżką – to nie problem dostępności sam w sobie, ale sygnał, że oba elementy zbudowano osobno.
Co wychwytuje kontrola automatyczna, a co wymaga testu ręcznego
| Automatycznie (reguła axe-core) | Co znajduje |
|---|---|
link-name |
Linki breadcrumbs bez nazwy, np. „Strona główna” tylko z ikoną |
list, listitem |
Lista zawierająca coś innego niż elementy listy, elementy listy poza listą |
aria-valid-attr-value |
aria-current z nieprawidłową wartością |
landmark-unique |
Kilka landmarków nawigacji bez unikalnych nazw (wskazówka) |
color-contrast |
Szary tekst breadcrumbs ze zbyt małym kontrastem |
target-size |
Linki breadcrumbs zbyt małe i zbyt blisko siebie |
Wszystkie to karty z naszej biblioteki reguł. Test ręczny: proszę sprawdzić czytnikiem ekranu, czy ścieżka jest ogłaszana jako nawigacja „Breadcrumb” z listą o właściwej liczbie pozycji, czy separatory milczą i czy bieżąca strona jest wskazana; proszę też sprawdzić, czy ścieżka zawija się przy 320 pikselach CSS i czy jest taka sama na każdej stronie.
Darmową kontrolę jednej strony warto uruchomić na stronie kategorii. To automatyczna kontrola, a nie pełny audyt.
Najczęstsze pytania
Czy WCAG wymaga ścieżki nawigacji (breadcrumbs)?
Nie. Breadcrumbs to jeden ze sposobów, by pomóc użytkownikom odnaleźć swoje miejsce. Kryterium 2.4.5 Wiele dróg wymaga więcej niż jednego sposobu dotarcia do strony w zestawie stron; breadcrumbs mogą to wspierać razem z nawigacją i wyszukiwarką, ale nie są wymagane.
Jak poprawnie oznaczyć breadcrumbs?
Element nav z etykietą „Breadcrumb” w aria-label, lista uporządkowana linków do stron nadrzędnych i aria-current="page" na linku do bieżącej strony. To wzorzec breadcrumb z APG.
Czy bieżąca strona w breadcrumbs powinna być linkiem?
Dopuszczalne jest jedno i drugie. Jeśli jest linkiem, potrzebuje aria-current="page". Jeśli jest zwykłym tekstem, APG uznaje aria-current za opcjonalne.
Jak dodawać separatory?
W CSS, np. obramowaniem lub pseudoelementem, aby czytniki ekranu nie odczytywały „ukośnik” czy „większy niż” między linkami. Jeśli separator jest w HTML, należy ukryć go przez aria-hidden="true".
Czy kontrola automatyczna przetestuje breadcrumbs?
Znajduje linki bez nazw, uszkodzoną strukturę listy, nieprawidłowe wartości aria-current i landmarki nawigacji bez unikalnych nazw. To, czy ścieżka odpowiada strukturze serwisu, musi ocenić człowiek.
Źródła
- W3C WAI, APG Breadcrumb pattern: https://www.w3.org/WAI/ARIA/apg/patterns/breadcrumb/
- W3C WAI, APG Breadcrumb example: https://www.w3.org/WAI/ARIA/apg/patterns/breadcrumb/examples/breadcrumb/