2.1.1 Klawiatura (ang.) Keyboard
Spis treści
Istota i cel kryterium
Głównym celem tej wytycznej jest zapewnienie, że każdy użytkownik może w pełni obsługiwać Twoją stronę internetową, korzystając wyłącznie z klawiatury. W praktyce oznacza to, że każda interaktywna funkcja – od kliknięcia w link, przez wysłanie formularza, aż po obsługę odtwarzacza wideo – nie może wymagać użycia myszy.
Definicja w j. angielskim
Definicja dostępna pod adresem (link otworzy się w nowej karcie):
https://www.w3.org/WAI/WCAG22/quickref/#keyboard
Definicja w j. polskim
Definicja dostępna pod adresem (link otworzy się w nowej karcie):
https://www.w3.org/Translations/WCAG21-pl/#klawiatura
Słownik pojęć
- Interfejs klawiatury (ang.) Keyboard Interface
-
–
Mechanizm używany przez oprogramowanie do odbierania danych wejściowych w postaci naciśnięć klawiszy. Co istotne, interfejs ten może być obsługiwany przez fizyczną klawiaturę, ale także przez oprogramowanie do rozpoznawania mowy, systemy (ang.) sip-and-puff czy klawiatury ekranowe.
- Funkcjonalność (ang.) Functionality
-
–
Wszystkie procesy i wyniki, które użytkownik może osiągnąć poprzez swoje działanie (np. wysłanie formularza, nawigacja po menu).
Wpływ na dostępność (Kogo wspierasz?)
- Osoby niewidome: Nie korzystają z urządzeń wskazujących wymagających koordynacji wzrokowo-ruchowej; polegają wyłącznie na poleceniach klawiaturowych i czytnikach ekranu ((ang.) Screen Readers).
- Osoby z niepełnosprawnościami ruchowymi: Użytkownicy z drżeniem rąk lub ograniczoną precyzją, którzy zamiast myszy używają specjalistycznych emulatorów klawiatury.
- Osoby słabowidzące: Często mają trudności ze śledzeniem małego kursora myszy na ekranie i preferują przewidywalną nawigację klawiszową.
- (ang.) Power users: Osoby bez niepełnosprawności, które używają skrótów klawiaturowych dla zwiększenia wydajności pracy.
- Użytkownicy urządzeń mobilnych: Korzystający z zewnętrznych klawiatur podłączanych do tabletów lub telefonów.
Zasady wdrażania i wymagania techniczne
Aby spełnić to kryterium, przestrzegaj poniższych zasad technicznych:
- Zapewnij alternatywę dla wskaźnika: Każda akcja wykonywana myszą (np. kliknięcie, przeciąganie, zmiana rozmiaru) musi mieć swój odpowiednik klawiaturowy.
- Wykorzystuj natywny HTML: Zawsze wybieraj standardowe znaczniki takie jak
<a>,<button>,<input>czy<select>, ponieważ przeglądarki automatycznie zapewniają im obsługę klawiatury. - Zadbaj o widoczny fokus: Nigdy nie usuwaj obramowania fokusu za pomocą CSS (
outline: none) bez przygotowania wyraźnej, kontrastowej alternatywy. - Zachowaj logiczną kolejność tabulacji: Fokus powinien przemieszczać się w sposób przewidywalny, zazwyczaj od lewej do prawej i od góry do dołu, zgodnie z wizualnym układem strony.
- Programuj niestandardowe komponenty: Jeśli tworzysz autorskie widżety (np. z elementu
<div>), nadaj im atrybuttabindex="0", odpowiednie role ARIA oraz obsłuż zdarzeniakeydowndla klawiszyenterispacja. - Wdróż linki pomijające ((ang.) Skip links): Dodaj na początku strony niewidoczny link, który pojawia się po otrzymaniu fokusu i pozwala przeskoczyć nawigację bezpośrednio do treści głównej.
Wyjątki i sytuacje szczególne
Wyjątek stanowią funkcje, których istota zależy od ścieżki ruchu użytkownika, a nie tylko od punktu początkowego i końcowego.
- Przykład: Rysowanie odręczne w aplikacji graficznej lub gra wymagająca płynnego ruchu kursorem (np. symulator lotu helikopterem).
- Ważne: Większość standardowych interakcji (suwaki, menu, (ang.) drag-and-drop) można i należy dostosować do obsługi klawiaturowej.
Przykłady implementacji
Najczęstsze błędy
- F54: Stosowanie wyłącznie zdarzeń specyficznych dla urządzeń wskazujących (np.
onmousedown,onmouseover, gesty dotykowe) do obsługi kluczowych funkcji. - F55: Używanie skryptów, które automatycznie usuwają fokus z elementu w momencie jego otrzymania.
- Pułapka klawiaturowa ((ang.) Keyboard Trap): Brak możliwości wyjścia z komponentu (np. kalendarza lub modala) za pomocą klawisza
TablubEsc. - F42: Emulowanie linków za pomocą innych elementów bez zapewnienia ich pełnej obsługi klawiaturowej.
Najlepsze praktyki
- Zasada (ang.) „No ARIA is better than Bad ARIA”: Stosuj atrybuty ARIA tylko wtedy, gdy natywne elementy HTML nie wystarczają.
- Instrukcje obsługi: W przypadku bardzo złożonych komponentów (np. edytorów online) podaj skróconą informację o dostępnych skrótach klawiaturowych.
- Testowanie bez myszy: Regularnie sprawdzaj działanie serwisu, odłączając mysz i korzystając wyłącznie z klawiatury.
- Zgodność z konwencjami platformy: Choć WCAG dopuszcza niestandardowe mapowanie klawiszy (np. przycisk reagujący tylko na
Enter), dobrą praktyką jest przestrzeganie standardów przeglądarkowych (reakcja naEnteriSpacja). - Widoczność fokusu: Projektuj wskaźniki fokusu tak, aby były wyraźne nawet dla osób z dużą wadą wzroku (kontrast i rozmiar).
Metody testowania
- NVDA: Zweryfikuj, czy czytnik ekranu informuje o stanie elementów (np. czy przycisk jest aktywny) podczas nawigacji klawiszowej.
- Testowanie manualne: Sprawdź, czy możesz przejść przez cały proces (np. od znalezienia produktu do płatności) używając tylko klawiszy Tab, Shift+Tab, Enter i strzałek.
- Narzędzie deweloperskie (ang.) Developer Tools: Sprawdź, czy elementy interaktywne mają przypisane odpowiednie (ang.) Event Listeners dla zdarzeń klawiatury.
- (ang.) WAVE Evaluation Tool: Użyj widoku (ang.) Structure, aby ocenić kolejność tabulacji i wykryć elementy „nieklikalne” dla klawiatury.
- ANDI.js: Wykorzystaj moduł (ang.) „Keyboard”, aby zweryfikować wizualnie ścieżkę fokusu i wykryć ukryte elementy interaktywne.
Sprawdź swoją wiedzę
W linku poniżej znajduje się 5 interaktywnych elementów. Twoim zadaniem jest sprawdzenie, czy każdy z nich jest dostępny wyłącznie za pomocą klawiatury (bez użycia myszy).
Notatka: Zanim zajrzysz do rozwiązania, uruchom wybrane narzędzia testowe i zapisz swoje wnioski na kartce.
Jak to sprawdzić?
- Użyj klawisza
Tababy przejść do każdego elementu. - Sprawdź czy element otrzymuje widoczny fokus (obramowanie/podświetlenie).
- Spróbuj aktywować element klawiszem
EnterlubSpacja. - Jeśli element nie jest osiągalny przez
Tablub nie reaguje na klawisze – nie spełnia kryterium 2.1.1.
Proponowane narzędzia: Klawiatura (Tab, Enter, Spacja), Narzędzie deweloperskie (ang.) Developer Tools, NVDA, (ang.) WAVE Evaluation Tool, ANDI.js
Link: https://pdc.ambiscale.com/training/wcag-2-1-1/
#1 DOBRZE
Dlaczego: To natywny element <button>, który automatycznie:
- Jest dostępny przez
Tab - Pokazuje widoczny fokus
- Reaguje na
EnteriSpacja - Jest ogłaszany przez czytniki ekranu jako „przycisk”
#2 BŁĄD
Problem: Element <div> z onclick nie jest dostępny klawiaturą.
Dlaczego: Element <div> bez atrybutu tabindex nie może otrzymać fokusu klawiatury. Nawet gdyby dodać tabindex="0", trzeba by jeszcze obsłużyć klawisze Enter i Spacja w JavaScript oraz dodać odpowiednią rolę ARIA.
Naprawa: Użyj natywnego <button> zamiast <div>.
#3 DOBRZE
Dlaczego: To natywny element <a href>, który:
- Jest dostępny przez
Tab - Aktywowany przez
Enter - Ma prawidłową semantykę (link do innej lokalizacji)
Uwaga: Linki są aktywowane tylko przez Enter, nie przez Spacja (w przeciwieństwie do przycisków).
#4 BŁĄD
Problem: Menu działa tylko na :hover (najechanie myszką).
Dlaczego: Wyzwalacz to <div> bez tabindex, więc użytkownik klawiatury nie może nawet ustawić na nim fokusu. Menu nigdy się nie otworzy dla osób korzystających wyłącznie z klawiatury.
Naprawa: Zamień na <button> i dodaj obsługę klawiatury (Enter otwiera, Escape zamyka, strzałki nawigują).
#5 BŁĄD
Problem: Obrazek <img> z onclick nie jest dostępny klawiaturą.
Dlaczego: Podobnie jak <div>, element <img> bez tabindex nie otrzymuje fokusu klawiatury. Nawet z tabindex="0" trzeba by dodać obsługę klawiszy i rolę role="button".
Naprawa: Użyj prawdziwego <button> z obrazkiem wewnątrz lub zamień obrazek na przycisk stylizowany CSS-em.
Źródła
- Abou-Zahra S., Eggert E., Vanderheiden G. [i in.] (red.), „2.1.1 Keyboard Level A”, [w:] Web Content Accessibility Guidelines (WCAG) 2.2 Quick Reference, 2025, https://www.w3.org/WAI/WCAG22/quickref/#keyboard [dostęp: 14.05.2026].
- Accessibility Guidelines Working Group Participants, „Understanding SC 2.1.1 Keyboard (Level A)”, [w:] WCAG 2.2 Understanding Docs, 2026, https://www.w3.org/WAI/WCAG22/Understanding/keyboard.html [dostęp: 14.05.2026].
- Accessibility Guidelines Working Group Participants, „Technique F54: Failure of Success Criterion 2.1.1 due to using only pointing-device-specific event handlers (including gesture) for a function”, [w:] Techniques for WCAG 2.2, 2026, https://www.w3.org/WAI/WCAG22/Techniques/failures/F54 [dostęp: 14.05.2026].
- Accessibility Guidelines Working Group Participants, „Technique F55: Failure of Success Criteria 2.1.1, 2.4.7, 2.4.13, and 3.2.1 due to using script to remove focus when focus is received”, [w:] Techniques for WCAG 2.2, 2026, https://www.w3.org/WAI/WCAG22/Techniques/failures/F55 [dostęp: 14.05.2026].
- ccessibility Guidelines Working Group Participants, „Technique F42: Failure of Success Criteria 1.3.1, 2.1.1, 2.1.3, or 4.1.2 when emulating links”, [w:] Techniques for WCAG 2.2, 2026, https://www.w3.org/WAI/WCAG22/Techniques/failures/F42 [dostęp: 14.05.2026].
- World Wide Web Consortium (W3C), „Kryterium sukcesu 2.1.1 Klawiatura”, [w:] Web Content Accessibility Guidelines (WCAG) 2.1, tłum. Fundacja Instytut Rozwoju Regionalnego, 2021, https://www.w3.org/Translations/WCAG21-pl/#klawiatura [dostęp: 14.05.2026].
- DOCK sp. z o.o., WCAG 2.1.1: Klawiatura, https://wcag.dock.codes/pl/dokumentacja/wcag-211/ [dostęp: 14.05.2026].
Dodatkowe linki
- W3C WCAG:
- Dokładna definicja: https://www.w3.org/WAI/WCAG22/quickref/#keyboard
- Zrozumienie podpunktu: https://www.w3.org/WAI/WCAG22/Understanding/keyboard.html