Projektowanie i UX

Focus na stronie — dlaczego jest tak ważny?

Focus pokazuje użytkownikowi klawiatury, gdzie aktualnie znajduje się na stronie. Sprawdź, co najczęściej psuje jego widoczność i obsługę.

Przemek z AAA · · 3 min czytania

Klawiatura z wyraźnie podświetlonym klawiszem nawigacji symbolizującym widoczny focus.

Na stronie wszystko działa myszą. Menu się rozwija, przyciski reagują, formularz można wysłać. Potem odkładasz mysz, naciskasz Tab i nagle okazuje się, że nie wiadomo, gdzie właściwie jesteś.

To właśnie rola fokusu. Pokazuje, który element interfejsu jest w danym momencie aktywny dla użytkownika klawiatury. Bez niego można przechodzić po stronie „po omacku”.

Focus to nie ozdobna ramka

Przeglądarka domyślnie zaznacza element, który otrzymał fokus. Problem zaczyna się wtedy, gdy projektant albo frontendowiec usuwa ten efekt, bo „nie pasuje do designu”. Klasyczny przykład to:

button:focus {
  outline: none;
}

Samo usunięcie obrysu nie jest rozwiązaniem. Jeżeli zastępujesz domyślny focus własnym stylem, musi on nadal być dobrze widoczny.

WCAG 2.2 na poziomie AA wymaga między innymi, żeby element mający fokus nie był całkowicie zasłonięty przez treści utworzone przez autora strony. W praktyce problem robią często przyklejone nagłówki, sticky footery, paski zgód na cookies i różnego rodzaju panele przyklejone do krawędzi ekranu.

Najprostszy test: przejdź stronę klawiaturą

Naciśnij Tab i idź po stronie od początku do końca. Nie próbuj od razu analizować każdego kryterium WCAG. Zobacz, czy przez cały czas potrafisz odpowiedzieć na jedno pytanie: gdzie teraz jestem?

  • Czy aktywny element jest wyraźnie widoczny?
  • Czy fokus przechodzi w logicznej kolejności?
  • Czy nie trafia do elementów niewidocznych?
  • Czy da się otworzyć i zamknąć menu?
  • Czy po zamknięciu modala fokus wraca w sensowne miejsce?
  • Czy sticky header lub baner nie zasłania aktywnego elementu?

Ten test zajmuje kilka minut i bardzo szybko ujawnia problemy, których nie widać podczas obsługi myszą.

Widoczny focus nie musi być brzydki

Dostępność nie wymaga niebieskiej ramki wokół każdego elementu. Focus można zaprojektować tak, żeby pasował do identyfikacji wizualnej strony: zmienić kolor obrysu, zastosować dodatkową ramkę, cień albo zmianę tła.

Ważne, żeby zmiana była naprawdę zauważalna. Delikatne przesunięcie koloru z jasnoszarego na trochę ciemniejszy może wyglądać elegancko na makiecie, ale w praktyce użytkownik może go po prostu nie zobaczyć.

Warto też testować focus na różnych tłach. Ten sam obrys może być bardzo wyraźny na białej sekcji i praktycznie znikać na zdjęciu albo ciemnym footerze.

Focus i kolejność to dwie różne rzeczy

Nawet idealnie widoczny focus nie pomoże, jeżeli skacze po stronie bez logiki. Częstym źródłem problemów jest ręczne ustawianie dodatnich wartości tabindex, wizualne przestawianie elementów CSS-em bez zmiany kolejności w DOM albo komponenty JavaScript, które przechwytują fokus w niewłaściwy sposób.

Najbezpieczniej, gdy kolejność interakcji wynika naturalnie ze struktury HTML. Im więcej ręcznego sterowania fokusem, tym łatwiej stworzyć problem, który ujawni się dopiero podczas testów klawiaturą lub czytnikiem ekranu.

Kiedy problem robi się większy

Na prostej stronie wizytówkowej kilka błędów fokusu często da się poprawić szybko. Inaczej wygląda to w rozbudowanej aplikacji, sklepie, serwisie z modalami, filtrami, dropdownami i dynamicznie ładowaną treścią. Tam pojedynczy problem w komponencie może powtarzać się w dziesiątkach miejsc.

Jeśli nie wiesz, czy problem leży w CSS, strukturze HTML czy logice komponentu, napisz na redakcja@dostepnoscwcag.pl. Nasi audytorzy i programiści mogą sprawdzić problem, wskazać sposób naprawy i przygotować wycenę prac.

Źródła

O autorze: Przemek z AAA

Tworzę strony internetowe i zajmuję się ich dostępnością. Na Trzy razy A wyjaśniam WCAG i opisuję rozwiązania, które można wykorzystać we własnym projekcie.

Komentarze (1)

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Pola oznaczone jako „wymagane” trzeba wypełnić.

Adres zaczynający się od https://

Ustawienia cookies

Wybierz, na które cookies się zgadzasz. Niezbędne działają zawsze.

Niezbędne zawsze włączone

Bez nich serwis nie działa poprawnie: zapamiętują Twój wybór dotyczący cookies i obsługują logowanie do panelu WordPressa. Nie wymagają zgody, więc nie da się ich wyłączyć.

Lista cookies w tej grupie (6)
  • wcag_zgoda

    Zapamiętuje, czy zgadzasz się na cookies analityczne, żeby nie pytać przy każdej wizycie.

    Dostawca: Trzy razy A. Czas przechowywania: 180 dni.

  • wordpress_test_cookie

    Sprawdza, czy przeglądarka przyjmuje cookies. Powstaje na stronie logowania.

    Dostawca: Trzy razy A (WordPress). Czas przechowywania: do zamknięcia przeglądarki.

  • wordpress_[…], wordpress_sec_[…]

    Uwierzytelniają osobę zalogowaną do panelu administracyjnego. Dotyczą tylko osób, które się logują.

    Dostawca: Trzy razy A (WordPress). Czas przechowywania: do zamknięcia przeglądarki, a z opcją „Zapamiętaj mnie” 14 dni.

  • wordpress_logged_in_[…]

    Informuje serwis, że jesteś zalogowany i jako kto. Dotyczy tylko osób, które się logują.

    Dostawca: Trzy razy A (WordPress). Czas przechowywania: do zamknięcia przeglądarki, a z opcją „Zapamiętaj mnie” 14 dni.

  • wp-settings-[…], wp-settings-time-[…]

    Zapamiętują ustawienia widoku panelu administracyjnego. Dotyczą tylko osób, które się logują.

    Dostawca: Trzy razy A (WordPress). Czas przechowywania: 1 rok.

  • comment_author_[…], comment_author_email_[…], comment_author_url_[…]

    Zapamiętują imię, e-mail i adres strony z formularza komentarza. Powstają tylko wtedy, gdy zaznaczysz „Zapamiętaj moje dane w tej przeglądarce”.

    Dostawca: Trzy razy A (WordPress). Czas przechowywania: 1 rok.

Pomagają nam sprawdzić, które treści są czytane i skąd przychodzą odwiedzający. Włączamy je tylko za Twoją zgodą. Dostawcą usługi jest Google Ireland Limited; dane mogą trafiać do Google LLC w USA na podstawie decyzji Komisji Europejskiej w sprawie EU-US Data Privacy Framework.

Lista cookies w tej grupie (2)
  • _ga

    Rozróżnia odwiedzających, żeby policzyć wizyty.

    Dostawca: Google Ireland Limited. Czas przechowywania: 2 lata.

  • _ga_EX5JS27JRK

    Zapamiętuje stan bieżącej sesji w Google Analytics 4.

    Dostawca: Google Ireland Limited. Czas przechowywania: 2 lata.

Pamięć przeglądarki tylko Twoje ustawienia

Rozmiar tekstu i kolory, które sam wybierasz, zapisujemy w pamięci przeglądarki (localStorage). Te dane nie trafiają na serwer.

Lista zapisywanych ustawień (2)
  • nr-font

    Rozmiar tekstu wybrany przyciskami A−, A, A+.

  • nr-theme

    Motyw kolorów (jasny, ciemny, kontrast) wybrany na pasku u góry strony.

Więcej informacji: Polityka prywatności.