Dostępność to nie opcja — to obowiązek
Dostępność cyfrowa (web accessibility) to projektowanie stron i aplikacji w sposób umożliwiający korzystanie z nich przez wszystkich użytkowników — w tym osoby z niepełnosprawnościami wzroku, słuchu, ruchu czy poznawczymi. W Polsce od czerwca 2025 roku obowiązuje Europejski Akt Dostępności, który rozszerza wymogi dostępności na sektor prywatny.
Ale nawet bez regulacji prawnych — dostępna strona to po prostu lepsza strona. Korzyści wykraczają daleko poza osoby z niepełnosprawnościami.
Czym jest WCAG?
WCAG (Web Content Accessibility Guidelines) to międzynarodowy standard dostępności cyfrowej opracowany przez W3C. Aktualna wersja to WCAG 2.2, opublikowana w 2023 roku.
WCAG definiuje trzy poziomy zgodności:
- Poziom A — minimalne wymagania. Eliminacja najpoważniejszych barier dostępności
- Poziom AA — rekomendowany standard. Wymagany przez większość regulacji prawnych, w tym Europejski Akt Dostępności
- Poziom AAA — najwyższy poziom. Rzadko wymagany w całości, ale warto stosować wybrane kryteria
Standard opiera się na czterech zasadach — treść musi być postrzegalna, funkcjonalna, zrozumiała i solidna (POUR: Perceivable, Operable, Understandable, Robust).
Kontrast kolorów — najczęstszy problem
Niewystarczający kontrast między tekstem a tłem to najczęściej spotykane naruszenie dostępności w internecie. WCAG 2.2 wymaga:
- Poziom AA: kontrast minimum 4.5:1 dla normalnego tekstu i 3:1 dla dużego tekstu (powyżej 18pt lub 14pt bold)
- Poziom AAA: kontrast minimum 7:1 dla normalnego tekstu i 4.5:1 dla dużego tekstu
Jak to sprawdzić w praktyce? Narzędzia takie jak WebAIM Contrast Checker, Colour Contrast Analyser czy wbudowany audyt w Chrome DevTools (Lighthouse) automatycznie wykryją problemy z kontrastem.
Częste błędy:
- Jasnoszary tekst na białym tle (np.
#999na#fffdaje kontrast zaledwie 2.85:1) - Kolorowe przyciski z białym tekstem, gdzie kolor tła jest zbyt jasny
- Placeholder w polach formularza o zbyt niskim kontraście
Semantyczny HTML — fundament dostępności
Poprawna semantyka HTML to najważniejszy i najtańszy sposób poprawy dostępności. Czytniki ekranu (screen readers) opierają się na strukturze HTML, aby zrozumieć i przedstawić treść strony.
Używaj natywnych elementów HTML zamiast div-ów z ARIA:
<!-- Źle -->
<div class="button" onclick="submit()" role="button" tabindex="0">
Wyślij
</div>
<!-- Dobrze -->
<button type="submit">Wyślij</button>
Natywny <button> automatycznie obsługuje fokus klawiatury, aktywację Enterem i Spacją oraz jest rozpoznawany przez czytniki ekranu. Div z role="button" wymaga ręcznej implementacji tego wszystkiego.
Kluczowe elementy semantyczne:
<header>,<nav>,<main>,<footer>— definiują regiony strony (landmarks)<h1>do<h6>— hierarchia nagłówków (nie pomijaj poziomów!)<ul>,<ol>— listy, nie seria div-ów<table>z<th>iscope— dla danych tabelarycznych<label>z atrybutemfor— powiązanie etykiet z polami formularza
Atrybuty ARIA — kiedy HTML nie wystarcza
ARIA (Accessible Rich Internet Applications) to zestaw atrybutów rozszerzających semantykę HTML. Stosuj je tylko wtedy, gdy natywny HTML nie zapewnia potrzebnej informacji.
Pierwsza zasada ARIA: nie używaj ARIA, jeśli możesz użyć natywnego HTML. Źle zastosowane atrybuty ARIA mogą pogorszyć dostępność zamiast ją poprawić.
Najczęściej potrzebne atrybuty:
aria-label— opis elementu, gdy nie ma widocznego tekstu (np. przycisk z samą ikoną)aria-hidden="true"— ukrywa element dekoracyjny przed czytnikami ekranuaria-live="polite"— informuje czytnik o dynamicznie zmieniającej się treściaria-expanded— stan rozwinięcia/zwinięcia (np. menu, akordeon)aria-describedby— powiązanie elementu z dodatkowym opisem
Nawigacja klawiaturą
Wielu użytkowników nie korzysta z myszy — osoby niewidome, osoby z niepełnosprawnościami ruchowymi, a także doświadczeni użytkownicy preferujący klawiaturę. Strona musi być w pełni obsługiwalna za pomocą klawiatury.
Kluczowe wymagania:
- Widoczny fokus — użytkownik musi widzieć, który element jest aktywny. Nigdy nie usuwaj outline bez zastąpienia go równie widocznym stylem
- Logiczna kolejność tabulacji — elementy powinny być fokusowane w kolejności odpowiadającej wizualnemu układowi strony
- Brak pułapek fokusa — użytkownik musi mieć możliwość opuszczenia każdego elementu za pomocą klawiatury (Tab, Shift+Tab, Escape)
- Skip link — link na początku strony pozwalający przeskoczyć nawigację i przejść do głównej treści
<a href="#main-content" class="skip-link">
Przejdź do treści głównej
</a>
.skip-link {
position: absolute;
top: -100%;
left: 0;
}
.skip-link:focus {
top: 0;
z-index: 1000;
}
Obrazy i multimedia
- Każdy obraz informacyjny musi mieć atrybut
altz opisem treści - Obrazy dekoracyjne powinny mieć pusty
alt=""(nie brak atrybutu, lecz pusty atrybut) - Filmy potrzebują napisów (captions) i opcjonalnie audiodeskrypcji
- Animacje powinny respektować
prefers-reduced-motion
Testowanie dostępności
Nie czekaj z testowaniem na koniec projektu. Regularne sprawdzanie dostępności podczas rozwoju jest znacznie tańsze niż naprawianie problemów po wdrożeniu.
Narzędzia automatyczne:
- Lighthouse (wbudowany w Chrome DevTools) — szybki audyt dostępności
- axe DevTools — rozszerzenie przeglądarki z szczegółowymi raportami
- WAVE — wizualne nakładki pokazujące problemy na stronie
Testy manualne (niezbędne!):
- Nawiguj po stronie wyłącznie klawiaturą (Tab, Enter, Escape, strzałki)
- Przetestuj z czytnikiem ekranu (VoiceOver na Mac, NVDA na Windows)
- Powiększ stronę do 200% i sprawdź, czy jest nadal użyteczna
- Wyłącz CSS i sprawdź, czy treść jest zrozumiała
Podsumowanie
Dostępność to nie dodatkowy koszt — to inwestycja w jakość. Dostępna strona jest lepiej zoptymalizowana pod SEO, działa lepiej na urządzeniach mobilnych i zapewnia lepsze doświadczenie wszystkim użytkownikom.
Zacznij od podstaw: semantyczny HTML, wystarczający kontrast, obsługa klawiatury i atrybuty alt dla obrazów. Te cztery rzeczy rozwiążą większość problemów z dostępnością.
Potrzebujesz audytu dostępności swojej strony? Skontaktuj się z nami — pomożemy zidentyfikować i naprawić bariery dostępności.