Treść nietekstowa
Każdy obrazek, ikona, wykres czy przycisk graficzny musi mieć tekstowy odpowiednik, który przekazuje tę samą informację. Grafiki czysto dekoracyjne należy ukryć przed czytnikami ekranu.
Wszystkie kryteria sukcesu WCAG wyjaśnione prostym językiem: o co chodzi, komu to pomaga, jak to zrobić dobrze i jak to sprawdzić w kilka minut.
Żadne kryterium nie pasuje do filtrów. Spróbuj innego słowa lub wyczyść filtry.
Informacje i interfejs muszą być przedstawione tak, żeby każdy mógł je dostrzec – wzrokiem, słuchem lub dotykiem.
Każdy obrazek, ikona, wykres czy przycisk graficzny musi mieć tekstowy odpowiednik, który przekazuje tę samą informację. Grafiki czysto dekoracyjne należy ukryć przed czytnikami ekranu.
Nagranie samego dźwięku (np. podcast) potrzebuje transkrypcji. Nagranie samego obrazu bez dźwięku (np. animacja instruktażowa) potrzebuje opisu tekstowego lub ścieżki audio.
Każde nagrane wideo z dźwiękiem musi mieć napisy – nie tylko dialogi, ale też ważne dźwięki (np. [dzwonek telefonu], [śmiech]) i oznaczenie, kto mówi.
Jeśli w nagranym filmie ważne informacje są tylko w obrazie (napis na ekranie, pokazywany dokument, gest), trzeba je udostępnić przez audiodeskrypcję albo pełną alternatywę tekstową.
Transmisje na żywo (webinary, sesje rady, konferencje) muszą mieć napisy tworzone w czasie rzeczywistym.
Nagrane filmy muszą mieć audiodeskrypcję, czyli dodatkową ścieżkę lektorską opisującą ważne elementy obrazu, które nie wynikają z dźwięku.
Nagrane filmy z dźwiękiem mają tłumaczenie na język migowy (w Polsce – PJM).
Jeśli w filmie nie ma wystarczająco długich pauz na zwykłą audiodeskrypcję, film jest zatrzymywany, żeby lektor mógł opisać obraz.
Do nagranych filmów dostępny jest pełny tekst – scenariusz z dialogami i opisem wszystkiego, co dzieje się na ekranie.
Transmisje samego dźwięku na żywo (np. radio internetowe, audycja) mają tekstową alternatywę tworzoną na bieżąco.
Struktura, którą widać na ekranie (nagłówki, listy, tabele, pola formularza z etykietami, grupy), musi być też zapisana w kodzie – tak, żeby czytnik ekranu mógł ją odczytać.
Jeśli kolejność czytania ma znaczenie, kolejność elementów w kodzie musi być taka sama jak ta widoczna na ekranie.
Instrukcje nie mogą opierać się wyłącznie na kształcie, kolorze, rozmiarze, położeniu czy dźwięku („kliknij zielony przycisk po prawej”).
Strona lub aplikacja działa zarówno w pionie, jak i w poziomie – nie blokuje jednej orientacji ekranu, chyba że jest to niezbędne (np. aplikacja do czeków bankowych).
Pola formularza z danymi osobowymi (imię, e-mail, telefon, adres) mają w kodzie oznaczony cel przez atrybut autocomplete, dzięki czemu przeglądarka może je wypełnić automatycznie.
Cel elementów interfejsu, ikon i regionów strony jest zapisany w kodzie (np. przez punkty orientacyjne ARIA), tak aby narzędzia wspomagające mogły je dostosować – np. zamienić ikonę na symbol znany użytkownikowi.
Kolor nie może być jedynym sposobem przekazania informacji – np. zaznaczenia błędu, wyróżnienia linku w tekście czy serii na wykresie.
Jeśli dźwięk odtwarza się automatycznie dłużej niż 3 sekundy, musi być sposób, by go zatrzymać lub ściszyć niezależnie od głośności systemu.
Tekst musi mieć kontrast z tłem co najmniej 4,5:1. Duży tekst (od 24 px, albo od ok. 18,7 px pogrubiony) – co najmniej 3:1.
Tekst można powiększyć do 200% (np. zoomem przeglądarki) bez utraty treści i funkcji – nic nie może się uciąć ani nałożyć.
Tekst ma być tekstem, a nie obrazkiem z tekstem – wyjątkiem są logotypy i sytuacje, gdy konkretny wygląd jest niezbędny.
Wyższy próg kontrastu: 7:1 dla zwykłego tekstu i 4,5:1 dla dużego.
W nagraniach mowy dźwięki tła są wyłączone, można je wyłączyć albo są co najmniej 20 dB ciszej niż mowa.
Bloki tekstu dają się dostosować: użytkownik może wybrać kolory, wiersze mają do 80 znaków, tekst nie jest justowany, interlinia wynosi co najmniej 1,5, a po powiększeniu do 200% nie trzeba przewijać w poziomie.
Obrazy tekstu są używane wyłącznie dekoracyjnie albo gdy konkretny wygląd jest niezbędny (np. logo).
Treść musi się dopasować do szerokości 320 px (odpowiednik zoomu 400% na ekranie 1280 px) bez przewijania w dwóch kierunkach – wyjątki to np. mapy, tabele danych i edytory.
Elementy interfejsu (obramowania pól, przyciski, przełączniki, wskaźnik fokusu) i istotne części grafik (linie wykresu, ikony) muszą mieć kontrast co najmniej 3:1 z otoczeniem.
Strona nie może się psuć, gdy użytkownik zwiększy odstępy: interlinię do 1,5, odstęp po akapicie do 2×, odstępy między literami do 0,12 i między słowami do 0,16 wielkości czcionki.
Treści pojawiające się po najechaniu myszą lub fokusie (dymki, podpowiedzi, podmenu) muszą dać się zamknąć klawiszem Esc, pozwolić najechać na siebie kursorem i nie znikać same, dopóki użytkownik z nich korzysta.
Każdy musi móc obsłużyć interfejs i nawigację – także bez myszy, bez pośpiechu i bez ryzyka dla zdrowia.
Wszystko, co da się zrobić myszą, musi dać się zrobić samą klawiaturą: menu, przyciski, formularze, suwaki, okna dialogowe, odtwarzacze.
Jeśli fokus klawiatury wejdzie w jakiś element (np. osadzony odtwarzacz, edytor, okno), musi dać się z niego wyjść samą klawiaturą.
Cała funkcjonalność jest dostępna z klawiatury – bez wyjątku dla czynności zależnych od ścieżki ruchu (np. rysowanie odręczne).
Jeśli strona ma skróty z jednego znaku (np. „s” = szukaj), użytkownik musi móc je wyłączyć, zmienić albo działają one tylko, gdy fokus jest na danym elemencie.
Jeśli strona ma limit czasu (np. wylogowanie, czas na wypełnienie formularza), użytkownik musi móc go wyłączyć, wydłużyć (co najmniej 10-krotnie) albo przedłużyć jednym prostym działaniem po ostrzeżeniu.
Treści ruchome, migające lub przewijające się automatycznie dłużej niż 5 sekund (karuzele, pasy z wiadomościami, animacje) muszą mieć możliwość pauzy, zatrzymania lub ukrycia. To samo dotyczy treści aktualizujących się automatycznie.
Limit czasu nie jest istotną częścią działania – z wyjątkiem multimediów i wydarzeń na żywo.
Użytkownik może odłożyć lub wyłączyć przerwania (powiadomienia, wyskakujące komunikaty), poza nagłymi przypadkami.
Gdy sesja wygaśnie, po ponownym zalogowaniu użytkownik może kontynuować bez utraty danych.
Użytkownik jest uprzedzany, po jakim czasie bezczynności straci dane – chyba że dane są przechowywane przez co najmniej 20 godzin.
Nic na stronie nie może błyskać częściej niż trzy razy na sekundę (chyba że błyski są poniżej progów jasności i wielkości).
Nic nie błyska częściej niż trzy razy na sekundę – bez wyjątków dla małych obszarów.
Animacje ruchu wywołane interakcją (paralaksa, przesuwanie przy przewijaniu, powiększanie) można wyłączyć – chyba że są niezbędne.
Musi istnieć sposób, by pominąć powtarzające się bloki (menu, nagłówek) i przejść od razu do treści – zwykle link „Przejdź do treści” na początku strony.
Każda strona ma tytuł (<title>) opisujący jej temat lub cel.
Kolejność, w jakiej klawisz Tab przechodzi przez elementy, jest logiczna i zgodna z sensem strony.
Z treści linku (albo z linku i jego najbliższego kontekstu, np. zdania lub akapitu) musi wynikać, dokąd prowadzi.
Do każdej podstrony da się dotrzeć więcej niż jedną drogą, np. przez menu i wyszukiwarkę, albo menu i mapę strony.
Nagłówki i etykiety pól opisują temat lub cel tego, czego dotyczą.
Element, na którym jest fokus klawiatury, musi być wyraźnie widoczny (obramowanie, podświetlenie).
Użytkownik wie, gdzie jest w strukturze serwisu – np. dzięki ścieżce nawigacyjnej (okruszkom) lub oznaczeniu bieżącej pozycji w menu.
Cel każdego linku wynika z samego tekstu linku, bez kontekstu.
Treść jest podzielona na sekcje oznaczone nagłówkami.
Element z fokusem nie może być całkowicie zasłonięty przez treści stworzone przez autora strony – np. przyklejony nagłówek, stopkę czy baner cookies.
Element z fokusem nie jest zasłonięty nawet częściowo.
Wskaźnik fokusu jest duży i kontrastowy: co najmniej tak duży jak obramowanie o grubości 2 px wokół elementu i z kontrastem 3:1 między stanem z fokusem i bez.
Funkcje obsługiwane gestami wielopunktowymi (szczypanie, dwa palce) lub wymagającymi określonej ścieżki (przeciągnięcie po łuku) mają alternatywę w postaci pojedynczego kliknięcia/dotknięcia.
Akcja wykonuje się przy puszczeniu przycisku myszy / oderwaniu palca (a nie przy samym naciśnięciu) albo da się ją przerwać, przesuwając kursor poza element.
Dostępna nazwa elementu (odczytywana przez czytnik, używana przy sterowaniu głosem) zawiera tekst, który widać na etykiecie – najlepiej na początku.
Funkcje uruchamiane ruchem urządzenia (potrząśnięcie, przechylenie) mają alternatywę w interfejsie i można wyłączyć reagowanie na ruch.
Elementy klikalne mają co najmniej 44 × 44 piksele CSS (z wyjątkami m.in. dla linków w tekście).
Strona nie ogranicza metod wprowadzania – użytkownik może przełączać się między dotykiem, myszą i klawiaturą.
Każda funkcja wymagająca przeciągania (drag and drop, suwaki, sortowanie) ma alternatywę w postaci pojedynczych kliknięć.
Elementy klikalne mają co najmniej 24 × 24 piksele CSS albo są tak rozmieszczone, że wokół każdego mieści się okrąg o średnicy 24 px, nienachodzący na sąsiednie cele. Wyjątki: linki w tekście, elementy natywne przeglądarki.
Treść i działanie strony muszą być zrozumiałe i przewidywalne, a formularze – pomagać unikać błędów.
Domyślny język strony jest określony w kodzie (atrybut lang w elemencie <html>).
Fragmenty w innym języku niż reszta strony (cytat po angielsku, wersja w języku ukraińskim) mają oznaczony język.
Dostępne są wyjaśnienia żargonu, idiomów i terminów specjalistycznych.
Skróty i skrótowce są rozwinięte przy pierwszym użyciu albo w słowniczku.
Jeśli tekst wymaga umiejętności czytania powyżej poziomu szkoły podstawowej (niższy poziom średni), dostępna jest wersja uproszczona lub materiały pomocnicze.
Gdy znaczenie słowa zależy od wymowy (np. akcentu), dostępna jest informacja o wymowie.
Samo przejście fokusem na element nie może powodować zmiany kontekstu – otwarcia nowego okna, wysłania formularza czy przeniesienia na inną stronę.
Zmiana wartości pola (wybór z listy, zaznaczenie opcji) nie powoduje automatycznie zmiany kontekstu, chyba że użytkownik został o tym uprzedzony.
Powtarzające się elementy nawigacji (menu, stopka, wyszukiwarka) występują na każdej podstronie w tej samej kolejności.
Elementy o tej samej funkcji są nazywane i oznaczane tak samo w całym serwisie.
Zmiany kontekstu następują tylko na żądanie użytkownika albo można je wyłączyć.
Jeśli na wielu podstronach jest dostępna pomoc (dane kontaktowe, czat, formularz, FAQ), znajduje się ona zawsze w tym samym miejscu względem innych treści.
Jeśli formularz wykryje błąd, wskazuje, które pole jest błędne, i opisuje problem tekstem.
Pola formularza mają widoczne etykiety, a tam, gdzie trzeba – instrukcje (format daty, pola wymagane).
Jeśli wiadomo, jak poprawić błąd, komunikat podpowiada rozwiązanie (np. „Data musi mieć format DD.MM.RRRR”).
Przy formularzach o skutkach prawnych lub finansowych (wnioski, płatności, zmiana danych) użytkownik może sprawdzić dane przed wysłaniem, poprawić je lub cofnąć operację.
Dostępna jest pomoc kontekstowa do wypełniania formularzy (podpowiedzi, przykłady, instrukcje).
Każdy formularz wysyłający dane można sprawdzić, poprawić lub cofnąć.
W jednym procesie użytkownik nie musi ponownie wpisywać danych, które już podał – system uzupełnia je sam albo pozwala je wybrać (np. „adres do korespondencji taki sam jak zamieszkania”).
Logowanie nie może wymagać testu poznawczego (zapamiętania hasła, przepisania kodu, rozwiązania zagadki), chyba że jest alternatywa albo pomoc – np. możliwość wklejenia hasła, menedżer haseł, logowanie linkiem e-mail.
Logowanie nie wymaga żadnego testu poznawczego – także rozpoznawania obiektów czy własnych zdjęć.
Kod musi być na tyle poprawny, żeby odczytały go różne przeglądarki i technologie wspomagające.
Kryterium wymagało poprawnego składniowo HTML (domknięte znaczniki, unikalne id). W WCAG 2.2 zostało usunięte jako przestarzałe – współczesne przeglądarki i czytniki radzą sobie z błędami składni, a realne problemy wyłapują kryteria 1.3.1 i 4.1.2.
Każdy element interfejsu (przycisk, pole, przełącznik, zakładka, menu) ma w kodzie nazwę, rolę i aktualny stan, które mogą odczytać technologie wspomagające.
Komunikaty o stanie (np. „Dodano do koszyka”, „Znaleziono 12 wyników”, „Formularz wysłany”), które pojawiają się bez przenoszenia fokusu, są ogłaszane przez czytnik ekranu.
WCAG (Web Content Accessibility Guidelines) to międzynarodowy standard dostępności treści internetowych opracowany przez W3C. Opisuje, jak tworzyć strony, aplikacje i dokumenty, z których mogą korzystać osoby z niepełnosprawnościami – niewidome, głuche, z niepełnosprawnością ruchową czy poznawczą. Składa się z 4 zasad, 13 wytycznych i kryteriów sukcesu na trzech poziomach: A, AA i AAA.
Ustawa o dostępności cyfrowej stron internetowych i aplikacji mobilnych podmiotów publicznych odsyła do normy EN 301 549, która dla stron internetowych wymaga spełnienia WCAG 2.1 na poziomie AA (50 kryteriów). Te same wymagania techniczne dotyczą firm objętych European Accessibility Act. Najnowsza wersja standardu to WCAG 2.2 – warto ją stosować już teraz.
Poziom A to absolutne minimum – bez niego część osób w ogóle nie skorzysta ze strony. Poziom AA usuwa najczęstsze bariery i jest wymagany prawem. Poziom AAA to najwyższy standard; nie jest wymagany dla całych serwisów, bo nie wszystkie treści da się do niego dostosować.
WCAG 2.2 dodało 9 kryteriów, m.in. widoczność fokusu niezasłoniętego przez przyklejone elementy (2.4.11), alternatywę dla przeciągania (2.5.7), minimalny rozmiar przycisków 24×24 px (2.5.8), spójne umiejscowienie pomocy (3.2.6), brak konieczności ponownego wpisywania danych (3.3.7) oraz dostępne logowanie bez testów pamięciowych (3.3.8). Usunięto przestarzałe kryterium 4.1.1 Parsowanie.
Nie. Narzędzia automatyczne wykrywają tylko część problemów – szacuje się, że około 30–40%. Przy każdym kryterium w tym słowniku zaznaczamy, czy da się je sprawdzić automatycznie, czy wymaga testu ręcznego. Pełną ocenę zgodności daje dopiero audyt ekspercki.