W poniższym artykule omawiamy kluczowe obszary dostępności cyfrowej: od powiadomień o dynamicznych zmianach dla czytników ekranowych, przez dostępne walidacje formularzy, po logiczną strukturę nagłówków i linki. Wyjaśniamy również najważniejsze zapisy Ustawy z 26 kwietnia 2024 r. („o zapewnianiu spełniania wymagań dostępności…”) – terminy, wyjątki dla mikroprzedsiębiorców, okresy przejściowe oraz konsekwencje prawne. Na koniec formułujemy praktyczny plan działania.
Dalszą część artykułu przeczytasz poniżej - pod formularzem.
Powiadomienia o dynamicznych zmianach (ARIA live regions)
Wszystkie dynamiczne zmiany, które zachodzą „poza kontekstem” (np. automatyczne odświeżanie koszyka czy pojawienie się komunikatu) muszą być dostępnie komunikowane, inaczej osoby korzystające z czytników ekranowych ich nie zauważą i łatwo się zgubią podczas zakupów . ARIA live regions pozwalają programistycznie oznaczyć fragmenty strony jako obszary, w których zmiany będą automatycznie ogłaszane przez AT (assistive technologies) dzięki atrybutowi aria-live
. Odpowiedni dobór wartości (polite
vs. assertive
) oraz dodatkowych atrybutów (aria-atomic
, aria-relevant
) decyduje o priorytecie i zakresie odczytywanej informacji . Ponadto, aby nie naruszać Success Criterion 2.2.1 (Timing Adjustable), dynamiczne procesy powinny dawać użytkownikowi kontrolę nad czasem wyświetlania komunikatów lub umożliwiać ich wywołanie „na żądanie”
Problem i konieczność powiadomień
Gdy fragmenty strony są aktualizowane automatycznie lub w odpowiedzi na akcję użytkownika, bez przeładowania całości, osoby niewidome nie widzą wizualnych wskazówek i mogą nie wiedzieć, że pojawiła się nowa treść czy błąd .
Brak odpowiednich powiadomień często kończy się utratą kontekstu – użytkownik nie wie, czy dodano produkt do koszyka, czy formularz zgłoszenia wysłano poprawnie, co prowadzi do porzucenia procesu zakupowego
ARIA live regions
Atrybut aria-live
-
aria-live="polite"
: komunikaty są odczytywane dopiero po zakończeniu bieżącego ogłoszenia, co minimalizuje przerwania interakcji użytkownika . -
aria-live="assertive"
: bieżące komunikaty są przerywane i natychmiast ogłaszane, zalecane tylko dla krytycznych powiadomień (np. poważne błędy) . -
aria-live="off"
: zmiany są ogłaszane tylko, gdy fokus znajduje się w regionie; domyślne dla ról takich jakmarquee
czytimer
Atrybuty dodatkowe
-
aria-atomic="true|false"
– decyduje, czy czytnik odczyta cały region po zmianie (true
), czy tylko zaktualizowaną część (false
). Przydatne np. przy zegarach czy podsumowaniach . -
aria-relevant="additions removals text all"
– określa, które typy zmian (dodania, usunięcia, zmiany tekstu) powinny być ogłaszane; np. w czatach warto nasłuchiwać zarówno nowych, jak i usuniętych wiadomości .
Role z wbudowanymi live regions
Niektóre role ARIA pełnią funkcję live region domyślnie:
-
role="status"
– służy do aktualizacji stanu, np. paska postępu; zaleca się dodać redundantnearia-live="polite"
dla lepszej kompatybilności . -
role="alert"
– do komunikatów o błędach lub ostrzeżeń; automatycznie prefiksowane tekstem „Alert” i często implementowane jakoassertive
Praktyczne wskazówki
Definiowanie live region
-
Oznacz kontener jako live region przed wystąpieniem zmian (najlepiej w oryginalnym kodzie lub tuż po załadowaniu) – w przeciwnym razie AT mogą nie zarejestrować regionu
-
W drugim kroku zmieniaj tylko zawartość regionu – dodaj lub zaktualizuj tekst, zamiast rekonstruować cały element, by zapewnić stabilność focusu i czytelność dla AT .
Testowanie
-
Automatyczne: sprawdź obecność
aria-live
,aria-atomic
iaria-relevant
w kodzie (axe, WAVE, Lighthouse). -
Manualne:
-
Nawigacja klawiaturą – upewnij się, że elementy docelowe nie tracą focusu po aktualizacji.
-
Czytniki ekranowe (NVDA, VoiceOver) – zweryfikuj, czy zmiany są faktycznie ogłaszane i czy nie dochodzi do dubli lub pominięć
-
Kontrola użytkownika
Zgodnie z WCAG 2.2 Success Criterion 2.2.1, użytkownik musi mieć kontrolę nad elementami zawierającymi limity czasowe lub automatyczne odświeżanie:
-
możliwość wyłączenia lub wstrzymania odliczania,
-
regulacja czasu wyświetlania komunikatów,
-
wyraźne ostrzeżenie przed wygaśnięciem i opcja przedłużenia .
Dynamiczne treści powinny też być wywoływane „na żądanie” (np. kliknięcie „Pokaż nowe wiadomości”) zamiast automatycznie, aby uniknąć niezamierzonych przerwań
Stosowanie ARIA live regions to klucz do dostępnego e-commerce: odpowiednie oznaczenie obszarów, wybór polite
vs. assertive
, użycie aria-atomic
i aria-relevant
, oraz zapewnienie użytkownikowi kontroli zgodnie z SC 2.2.1 gwarantują, że wszystkie dynamiczne zmiany będą zauważone i zrozumiane przez osoby z niepełnosprawnościami. Regularne testy automatyczne i manualne pozwolą utrzymać wysoki standard dostępności.
Walidacja formularzy i komunikaty błędów
Przed wyświetleniem komunikatu o błędzie warto już natychmiastowo poinformować użytkownika o wymaganiach dotyczących pola (np. zasady tworzenia hasła) umieszczając krótką instrukcję bezpośrednio pod kontrolką – zgodnie z wytycznymi W3C Form Instructions, które zalecają podawanie formatów i zasad przed przełączeniem się czytnika w tryb „Forms Mode” . Jeśli natomiast błąd zostanie wykryty, Success Criterion 3.3.1 (Error Identification) wymaga, aby pole zostało oznaczone programowo (aria-invalid="true"
), a komunikat błędu opisany w tekście i ogłoszony technologii wspomagającej (np. za pomocą role="alert"
lub aria-live="assertive"
) . Z kolei SC 3.3.2 (Labels or Instructions) każe dostarczyć każdej kontrolce właściwą etykietę (<label>
lub aria-labelledby
/aria-describedby
), a placeholder nie zastępuje formalnej etykiety, gdyż znika przy wpisywaniu i nie jest traktowany jak label przez czytniki ekranu . Całość należy poddać zarówno testom automatycznym (axe, WAVE, Lighthouse), jak i manualnym (wypełnianie tabulatorem oraz weryfikacja z NVDA/VoiceOver), aby mieć pewność, że komunikaty błędów są odczytywane natychmiast po walidacji
Natychmiastowa informacja o wymaganiach
-
Podawaj wymagania formatu przy polu (np. „Hasło musi mieć min. 8 znaków i zawierać literę oraz cyfrę”) w formie in-line instructions – bez czekania na pierwsze nieudane wysłanie formularza; dzięki temu użytkownicy znają reguły od razu .
-
Unikaj polegania wyłącznie na placeholderach, które znikają przy wpisywaniu i nie są odczytywane jako etykiety przez AT
Kryterium sukcesu 3.3.1 Error Identification - Identyfikacja błędów
Oznaczanie pola w błędzie
-
Dodaj
aria-invalid="true"
do kontrolki, która nie spełnia warunków walidacji (np. wymagane pole puste lub niewłaściwy format)
Opis tekstowy błędu
-
Wyświetlaj komunikat błędu w postaci czytelnego tekstu obok lub pod polem (nie tylko czerwone obramowanie), np.
<span id="emailError">Adres e-mail musi zawierać „@”</span>
Ogłaszanie błędu czytnikom ekranu
-
Użyj
role="alert"
lubaria-live="assertive"
, aby AT przerwały bieżące komunikaty i niezwłocznie odczytały treść błędu; alternatywniearia-live="polite"
odczyta komunikat po zakończeniu bieżącej kolejki
Kryterium sukcesu 3.3.2 Labels or Instructions - Etykiety lub instrukcje
-
Każda kontrolka wymaga powiązanej etykiety –
<label for="pole">
lubaria-labelledby
/aria-describedby
– aby AT mogły zidentyfikować jej przeznaczenie . -
Placeholder nie zastępuje etykiety: znika przy rozpoczęciu wpisywania i nie jest odczytywany jako label przez czytniki ekranu .
-
W razie potrzeby dodaj instrukcje dotyczące formatu lub zakresu wartości bezpośrednio w treści etykiety lub w dodatkowym elemencie opisowym (
aria-describedby="hintId"
)
Testy
Testy klawiaturą
-
Wypełnij formularz wyłącznie za pomocą Tab, Space, Enter oraz klawiszy strzałek; sprawdź, czy focus logicznie przechodzi między polami i czy komunikaty błędów są dostępne po wywołaniu walidacji
Testy czytnikiem ekranu
- Użyj NVDA (Windows) i VoiceOver (macOS/iOS), aby zweryfikować, że:
- pole z
aria-invalid="true"
jest oznaczone jako błędne, - komunikaty błędów pojawiają się natychmiast i są odczytywane przez AT dzięki
role="alert"
lubaria-live
- pole z
Dzięki tak kompleksowemu podejściu (natychmiastowe instrukcje, oznaczanie błędnych pól, czytelne komunikaty i pełne etykiety) formularze staną się bardziej przyjazne i dla osób z niepełnosprawnościami, i dla wszystkich użytkowników.
Struktura nagłówków i linki
Nagłówki (SC 2.4.6)
Hierarchia i zagnieżdżanie
-
Nagłówki
<h1>
–<h6>
muszą być zagnieżdżane kolejno bez pomijania poziomów: po<h2>
powinna wystąpić dopiero<h3>
, nie<h4>
czy<h5>
W3C. -
Uporządkowanie zgodne z semantyką dokumentu pomaga użytkownikom AT (Assistive Technology) w szybkim przeglądaniu i rozumieniu struktury strony, podobnie jak spis treści .
Opis i znaczenie
-
-
Nagłówki powinny krótko i precyzyjnie oddawać temat sekcji; ich pominięcie lub stosowanie dla dekoracji naraża na utratę kontekstu W3C.
-
Etykiety (
<label>
) w formularzach i inne oznaczenia interfejsu również muszą być opisowe – wspierając zasadę „Headings and Labels” na poziomie AA
-
Linki (Kryterium sukcesu 2.4.4)
Cel linku w tekście
-
Tekst linku sam w sobie musi przekazywać, dokąd prowadzi (SC 2.4.4): np. „Pobierz regulamin (PDF)”, nie „Kliknij tutaj” W3C.
-
Ułatwia to nawigację listą linków w czytniku ekranu oraz orientację użytkownikom z ograniczeniami kognitywnymi lub motorycznymi.
Wizualne wyróżnienie
-
-
Nie polegaj wyłącznie na kolorze: dodaj podkreślenie lub obramowanie, by osoby z zaburzeniami percepcji kolorów mogły zidentyfikować link (SC 1.4.1 Use of Color)
-
Zmiana rozmiaru tekstu (Kryterium sukcesu 1.4.4)
Zmiana rozmiaru tekstu (SC 1.4.4)
Intencja i wymagania
-
Tekst (oprócz obrazów tekstu) musi być powiększalny do co najmniej 200 % bez utraty funkcjonalności ani treści, zapewniając komfort osobom ze słabszym wzrokiem
Pozwól użytkownikowi zoomować
-
Nie wyłączaj możliwości powiększania w przeglądarce (np.
user-scalable=no
). Zadbaj, by<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=yes">
wspierało zoom
Elastyczne jednostki
-
Używaj relatywnych jednostek (
em
,rem
,%
) zamiast pikseli, co pozwala zachować proporcje i czytelność przy zmianiefont-size
w ustawieniach przeglądarki
Testowanie
- Sprawdź, czy interfejs nie „rozsypuje się” przy 200 % zoomie: wszystkie elementy (formy, nawigacja) powinny pozostać czytelne i funkcjonalne.
Prosty język i zrozumiałość treści
Plain language (Kryterium sukcesu 3.1.5)
Definicja i cele
Success Criterion 3.1.5 wymaga, by treść nie przekraczała poziomu czytania niższego średniego wykształcenia, a w przypadku tekstów trudniejszych – udostępniono prostsze podsumowania czy wersje pomocnicze W3C.
Korzyści
Pisanie w prostym języku ułatwia korzystanie z witryny osobom z dysleksją, zaburzeniami uwagi, niską biegłością językową oraz użytkownikom, dla których język strony nie jest ojczysty
Wytyczne WCAG i techniki
Techniki podstawowe
-
G153: Making text easier to read – stosuj krótkie zdania i proste słownictwo W3C.
-
G79: Providing spoken version – rozważ udostępnienie wersji audio dla trudniejszych fragmentów W3C.
-
G86: Providing a text summary – zamieszczaj streszczenia w uproszczonym języku na stronach zawierających skomplikowane informacje W3C.
Techniki dodatkowe
-
Definiowanie terminów w prostym słownictwie oraz stosowanie glosariusza dla terminów specjalistycznych W3C.
-
Unikanie idiomów, metafor i sarkazmu, które mogą być niezrozumiałe dla wielu osób W3C.
Zasady pisania prostym językiem
Krótkie zdania i aktywny tryb
Zaleca się, by zdania nie przekraczały 20 słów oraz by pisane były w czasie czynnym (np. „Wprowadź kod pocztowy”, nie „Kod pocztowy powinien być wprowadzony”) WCAG.
Unikanie żargonu i złożonych klauzul
Zamiast terminów typu „przeprowadzenie weryfikacji” używaj „sprawdź”, a złożone klauzule rozbij na mniejsze zdania Smashing Magazine.
Lista punktowana
-
Listy ułatwiają skanowanie treści wzrokiem i pozwalają na szybkie odnalezienie kluczowych informacji WCAG.
-
Każdy element listy zaczynaj od czasownika lub rzeczownika („Wybierz”, „Sprawdź”, „Podaj”)
Czytelność i UX
Jasne instrukcje
Umieszczaj wskazówki tuż pod polem formularza, np.:
„Hasło musi mieć min. 8 znaków, w tym przynajmniej jedną cyfrę i dużą literę”
Unikanie podwójnych negacji
Zwroty typu „Nie nieakceptuje” zastąp pozytywnymi: „Musisz zaakceptować” .
Struktura i formatowanie
- Nagłówki i akapity jasno oddzielone, by użytkownik mógł szybko przejść do interesującej sekcji.
- Używaj listek wypunktowanych zamiast długich bloków tekstu
Testowanie i monitorowanie
Testy automatyczne
Stosuj narzędzia do oceny czytelności (Flesch–Kincaid, Juicy Studio) oraz skanery dostępności, by wykryć zbyt długie zdania lub trudne słowa
Testy manualne
-
Użytkownicy rzeczywiści – przeprowadzaj badania z udziałem osób z różnymi potrzebami poznawczymi, by ocenić zrozumiałość
-
Feedback – zbieraj opinie i iteruj — plain language to proces cykliczny, nie jednorazowa poprawka
Kontekst prawny i terminy
Ustawa z 26 kwietnia 2024 r.
Ustawa o zapewnianiu spełniania wymagań dostępności produktów i usług przez podmioty gospodarcze weszła w życie 26 kwietnia 2024 r. Dziennik Ustaw.
Terminy obowiązywania
- 26 czerwca 2025 – wymóg dostępności cyfrowej dla nowych i zaktualizowanych serwisów e-commerce Biznes.gov.pl.
- 28 czerwca 2030 – koniec okresu przejściowego dla istniejących usług, jeżeli były świadczone „w formie niezmienionej” przed 2025
Wyjątki dla mikroprzedsiębiorców
Firmy zatrudniające ≤ 10 osób i osiągające roczny obrót ≤ 2 mln EUR mogą być zwolnione z niektórych obowiązków dostępności.
Prawa użytkownika i kary
- Użytkownik może zażądać zapewnienia dostępności; firma ma 7 dni na odpowiedź (max. przedłużenie do 2 miesięcy).
- Kary: do 10 % rocznego obrotu; do 5 000 PLN za brak deklaracji dostępności Biznes.gov.pl.
Rekomendowany proces wdrożenia
-
Audyt wstępny
- Automatyczne skanery (Axe, WAVE) + ręczna weryfikacja klawiaturą i czytnikiem.
-
Implementacja poprawek
- ARIA live regions,
role="alert"
,aria-invalid
, label for input, alt text.
- ARIA live regions,
-
Testy z użytkownikami
- Sesje z osobami korzystającymi z czytników i nawigacji klawiaturą.
-
Szkolenia zespołu
- Dział marketingu, deweloperzy, webmasterzy – „accessibility by design”.
-
Utrzymanie
- Audyt co kwartał; monitorowanie zmian w WCAG i prawie.
Źródła
- Ustawa z dnia 26 kwietnia 2024 r. o zapewnianiu spełniania wymagań dostępności… (Dz.U. poz. 731) Dziennik Ustaw
- Biznes.gov.pl – zwolnienie mikroprzedsiębiorców i terminy dostosowania Biznes.gov.pl
- Netplace – Europejski Akt o Dostępności, wyjątki i okres przejściowy do 2030 r. Netplace
- Shoper.pl – wdrożenie dostępności cyfrowej w praktyce e-commerce Shoper
- MDL Kancelaria – interpretacja okresu przejściowego do 2030 r. JKLAW
- MDN Web Docs – ARIA live regions dla dynamicznych zmian MDN Web Docs
- Harvard Accessibility – powiadamianie o dynamicznych zmianach accessibility.huit.harvard.edu
- W3C Understanding SC 3.3.1 Error Identification W3C
- Smashing Magazine – przewodnik po dostępnej walidacji formularzy Smashing Magazine
- TetraLogical – dostępne komunikaty błędów z aria-invalid i role="alert" TetraLogical
- W3C Understanding SC 3.3.2 Labels or Instructions W3C
- W3C Headings tutorial – logiczna struktura nagłówków W3C
- Yale Usability – znaczenie nagłówków dla czytników ekranowych usability.yale.edu
- Wikipedia WCAG 2.1 – lista success criteria (m.in. 2.4.4 Link Purpose) Wikipedia
- WCAG Plain Language blog – znaczenie prostego języka (SC 3.1.5) WCAG