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ą.
Występuje w: WCAG 2.0, WCAG 2.1 i WCAG 2.2.
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.