WCAG 2.4.11: Fokus niezasłonięty (Minimum)
WCAG 2.4.11: Fokus niezasłonięty (Minimum)
Kryterium sukcesu WCAG 2.4.11, wprowadzone w wersji 2.2, ma kluczowe znaczenie dla użytkowników nawigujących za pomocą klawiatury. Jego celem jest zapewnienie, że kiedy element interfejsu użytkownika otrzymuje fokus klawiatury, jego wskaźnik fokusu jest zawsze w pełni widoczny i nie jest zasłonięty przez żadną inną treść renderowaną przez autora strony.
Czym jest kryterium 2.4.11 Fokus niezasłonięty (Minimum)?
To kryterium wymaga, aby wskaźnik wizualny (np. ramka, zmiana tła), który pojawia się, gdy element interaktywny (taki jak link, przycisk, pole formularza) otrzymuje fokus za pomocą klawiatury, był w pełni widoczny dla użytkownika. Oznacza to, że żadna część tego elementu, w szczególności jego wskaźnik fokusu, nie może być całkowicie zakryta przez inne elementy strony, takie jak:
Kryterium to nie dotyczy przypadków, gdy fokus jest zasłonięty przez elementy kontrolne przeglądarki lub systemu operacyjnego, ale wyłącznie przez treści stworzone przez autora strony.
Dlaczego to jest ważne? (Wpływ na dostępność)
Widoczny fokus jest fundamentalny dla wielu grup użytkowników. Bez niego nawigacja po stronie staje się niezwykle trudna, a często niemożliwa. Brak widocznego fokusu może prowadzić do frustracji, błędów i niemożności wykonania zamierzonych działań.
Kryterium 2.4.11 ma szczególne znaczenie dla:
Kiedy fokus jest zasłonięty, użytkownik traci punkt odniesienia, nie wie, który element jest aktywny, co uniemożliwia efektywne korzystanie z serwisu.
Wymagania kryterium sukcesu 2.4.11
Oficjalne brzmienie kryterium sukcesu 2.4.11 (Fokus niezasłonięty (Minimum)) jest następujące:
Gdy komponent interfejsu użytkownika otrzymuje fokus klawiatury, komponent ten nie jest całkowicie zasłonięty przez treść renderowaną przez autora.
Kluczowe aspekty tego wymagania to:
Kryterium to ma poziom zgodności AA.
Praktyczne wskazówki dotyczące zgodności
Aby zapewnić zgodność z WCAG 2.4.11, należy wziąć pod uwagę następujące wytyczne:
Przykłady implementacji
Przykład niepoprawny: Sticky header zasłaniający fokus
W tym przykładzie stały nagłówek (sticky header) może zasłaniać linki lub elementy kotwicy, gdy strona jest przewijana, a fokus ląduje na elemencie znajdującym się bezpośrednio pod nagłówkiem.
HTML
CSS
W tym scenariuszu, jeśli użytkownik kliknie link <a href="#sekcja1">Sekcja 1</a> w nagłówku, przeglądarka przewinie stronę do elementu #sekcja1. Ze względu na stały nagłówek, nagłówek <h2>Pierwsza Sekcja</h2> i ewentualnie początek tekstu <p>, wraz ze wskaźnikiem fokusu, mogą być całkowicie zasłonięte przez .sticky-header.
Przykład poprawny: Sticky header z użyciem scroll-margin
Aby rozwiązać problem z zasłanianiem fokusu przez stały nagłówek, można użyć właściwości CSS scroll-margin-top. Ta właściwość określa odległość, jaką przeglądarka powinna zachować od górnej krawędzi elementu docelowego podczas przewijania do niego.
HTML
CSS
Dzięki dodaniu scroll-margin-top: 70px; do elementów <section>, przeglądarka podczas przewijania do tych sekcji pozostawi 70 pikseli wolnego miejsca u góry, co zapobiegnie ich zasłonięciu przez 60-pikselowy nagłówek. W ten sposób fokus na elemencie docelowym będzie zawsze w pełni widoczny.
Przykład niepoprawny: Modal / Pop-up zasłaniający fokus
W tym przykładzie, po otwarciu modala, fokus pozostaje na elemencie znajdującym się za modalem, który jest częściowo lub całkowicie zasłonięty.
HTML
CSS
JavaScript
Jeśli użytkownik nawiguje klawiaturą, otwiera modal, ale fokus pozostaje na elemencie znajdującym się za modalem (np. .focusable-behind-modal), który jest zasłonięty przez półprzezroczyste tło modala lub sam modal, wówczas kryterium 2.4.11 jest naruszone. Użytkownik nie wie, gdzie znajduje się fokus.
Przykład poprawny: Modal z zarządzaniem fokusem
Aby zachować zgodność z WCAG 2.4.11, po otwarciu modala należy przenieść fokus do pierwszego interaktywnego elementu wewnątrz modala, a także zastosować „pułapkę fokusu” (focus trap), aby fokus nie mógł opuścić modala, dopóki ten jest otwarty. Po zamknięciu modala fokus powinien wrócić do elementu, który go wywołał.
HTML
CSS
JavaScript
W tym poprawionym przykładzie, po otwarciu modala, fokus jest natychmiast przenoszony do pierwszego interaktywnego elementu w jego wnętrzu. Implementacja „pułapki fokusu” zapobiega wydostawaniu się fokusu poza modal, a po jego zamknięciu fokus jest przywracany do elementu, który go wywołał. Dodatkowo, użycie atrybutów role="dialog" i aria-modal="true" oraz aria-labelledby poprawia dostępność dla czytników ekranu.
Najlepsze praktyki i typowe pułapki
Najlepsze praktyki:
Typowe pułapki:
Podsumowanie
Kryterium WCAG 2.4.11 „Fokus niezasłonięty (Minimum)” jest niezbędne dla zapewnienia dostępności i użyteczności stron internetowych dla wszystkich użytkowników, a w szczególności dla tych, którzy polegają na nawigacji klawiaturą. Zapewnienie, że wskaźnik fokusu jest zawsze w pełni widoczny, pozwala użytkownikom na świadome i efektywne poruszanie się po treściach i interakcję z nimi. Implementacja wskazówek, takich jak użycie scroll-margin i prawidłowe zarządzanie fokusem w JavaScript, jest kluczowa dla spełnienia tego wymogu i stworzenia bardziej inkluzywnego doświadczenia użytkownika.
Powiązane wpisy
- WCAG 5.2.3: Pełne procesy
- WCAG 5.2.4: Tylko sposoby korzystania z technologii wspierające dostępność
- WCAG 5.2.5: Brak zakłóceń
- WCAG 5.3.1: Wymagane elementy oświadczenia o zgodności
- WCAG 5.3.2: Opcjonalne elementy oświadczenia o zgodności
Nadal szukasz odpowiedzi?
Zapytaj naszych specjalistów używając czatu online.