Krótko
Gdy użytkownik porusza się po stronie klawiaturą, musi widzieć, który element jest aktualnie aktywny.
Funkcjonalność · Poziom AA
Widoczny wskaźnik musi pokazywać, który element ma aktualnie fokus podczas nawigacji klawiaturą.
Gdy użytkownik porusza się po stronie klawiaturą, musi widzieć, który element jest aktualnie aktywny.
Użytkownik naciska Tab i przechodzi przez linki, przyciski, pola formularza oraz elementy menu. Jeśli nie widzi fokusu, nie wie, gdzie jest, co może aktywować i czy nie zgubił się na stronie.
To szczególnie trudne w długich formularzach, menu mobilnych, koszykach zakupowych i stronach z wieloma linkami. Strona może technicznie działać z klawiatury, ale bez widocznego fokusu korzystanie z niej przypomina poruszanie się po omacku.
outline: none bez widocznego zamiennika.Użyj widocznego obrysu dla elementów, które mogą dostać fokus z klawiatury. :focus-visible pomaga pokazać wskaźnik wtedy, gdy jest najbardziej potrzebny.
Kod — CSS
:where(a, button, input, select, textarea):focus-visible {
outline: 3px solid #FA9632;
outline-offset: 3px;
}
Jak to działa
Po przejściu klawiaturą użytkownik widzi wyraźny obrys wokół aktywnego linku, przycisku albo pola formularza.
Usunięcie domyślnego obrysu bez zapewnienia widocznego zamiennika tworzy barierę dla osób korzystających z klawiatury.
Kod — CSS
button:focus {
outline: none;
}
Jak to działa
Przycisk nadal może mieć fokus technicznie, ale użytkownik nie widzi, który element jest aktywny. To nie spełnia celu kryterium 2.4.7.
W komponentach, np. kartach-linkach, warto połączyć obrys z dodatkowym cieniem. Wskaźnik jest wtedy czytelny także na bardziej złożonym tle.
Kod — CSS
.card-link:focus-visible {
outline: 3px solid #FA9632;
outline-offset: 4px;
box-shadow: 0 0 0 6px rgba(95, 40, 180, 0.18);
}
Jak to działa
Obrys pokazuje granicę aktywnego elementu, a cień zwiększa widoczność bez zmiany układu strony.
Symulacja: fokus jest prawie niewidoczny i łatwo go przeoczyć.
Symulacja: aktywny element ma wyraźny obrys, odsunięcie i dodatkowy cień.
outline: none.outline w CSS, bo „brzydko wygląda”.fixed albo sticky.