Krótko
Gdy użytkownik przechodzi po stronie klawiaturą, fokus powinien iść w logicznej kolejności zgodnej ze znaczeniem i obsługą strony.
Funkcjonalność · Poziom A
Gdy użytkownik przechodzi po stronie klawiaturą, fokus powinien iść w logicznej kolejności zgodnej ze znaczeniem i obsługą strony.
Gdy użytkownik przechodzi po stronie klawiaturą, fokus powinien iść w logicznej kolejności zgodnej ze znaczeniem i obsługą strony.
Użytkownik naciska Tab i spodziewa się przechodzić przez stronę od góry do dołu oraz od lewej do prawej, zgodnie z układem i treścią. Jeśli fokus skacze przypadkowo, omija ważne elementy, wpada do stopki przed formularzem albo przechodzi za otwarty modal, użytkownik traci orientację.
W takiej sytuacji osoba korzystająca z klawiatury może nie wiedzieć, gdzie jest, co może aktywować i jak wrócić do zadania. 2.4.3 nie mówi o tym, czy fokus jest widoczny, tylko czy jego kolejność ma sens.
tabindex, na przykład tabindex="1" i tabindex="2", tworzy sztuczną kolejność.Kolejność linków w kodzie odpowiada kolejności, w jakiej użytkownik powinien je odwiedzać klawiaturą.
Kod — HTML
<nav aria-label="Główna nawigacja">
<a href="/szkolenia">Szkolenia</a>
<a href="/audyt">Audyt dostępności</a>
<a href="/kontakt">Kontakt</a>
</nav>
Jak to działa
Przeglądarka przechodzi po linkach w naturalnej kolejności dokumentu, bez sztucznego sterowania fokusem.
Dodatnie wartości tabindex tworzą sztuczną kolejność fokusu i szybko prowadzą do chaosu. Zwykle należy ich unikać.
Kod — HTML
<a href="/kontakt" tabindex="3">Kontakt</a>
<a href="/szkolenia" tabindex="1">Szkolenia</a>
<a href="/audyt" tabindex="2">Audyt dostępności</a>
Jak to działa
Użytkownik klawiatury idzie według numerów, a nie według widocznej lub logicznej kolejności treści.
Po otwarciu modala fokus trafia do jego zawartości. Po zamknięciu wraca do elementu, który otworzył modal.
Kod — JavaScript
const openButton = document.querySelector("#open-modal");
const modal = document.querySelector("#dialog");
const closeButton = document.querySelector("#close-modal");
openButton.addEventListener("click", function () {
modal.showModal();
closeButton.focus();
});
closeButton.addEventListener("click", function () {
modal.close();
openButton.focus();
});
Uwaga
To przykład edukacyjny pokazujący zasadę zarządzania fokusem, a nie pełna biblioteka modalna.
To jest statyczne demo edukacyjne. Numery pokazują kolejność przechodzenia fokusem, a nie działające elementy interfejsu.
Problem: fokus zaczyna od miejsca, którego użytkownik się nie spodziewa.
Ryzyko: CSS może pokazywać elementy w innej kolejności niż DOM.
Kolejność wspiera zadanie: użytkownik idzie przez treść i formularz przewidywalnie.
tabindex.tabindex.