Praktyczne poprawki sklepu dla osób niewidomych, słabowidzących i korzystających z klawiatury: alternatywy tekstowe, etykiety, fokus, kontrast i powiększanie treści. Lekcja 6.2 kursu INF.03.
Dostępność strony to możliwość odbioru treści i obsługi funkcji przez osoby o różnych potrzebach, także z niepełnosprawnościami. Na egzaminie rozpoznajesz rolę tekstu alternatywnego, etykiet i kontrastu, a w praktyce stosujesz te zasady w gotowej witrynie. Sklep powinien pozwalać wybrać produkt i wysłać zamówienie również bez myszy, przy powiększeniu i z czytnikiem ekranu.
WCAG i potrzeby odbiorców
WCAG, od Web Content Accessibility Guidelines (wytyczne dostępności treści internetowych), opisuje kryteria sprawdzania dostępności. Cztery zasady mówią, że treść ma być postrzegalna, funkcjonalna, zrozumiała i solidna. Postrzegalność obejmuje między innymi alternatywę dla obrazu, funkcjonalność obsługę klawiaturą, zrozumiałość czytelne etykiety, a solidność poprawną współpracę z technologiami wspomagającymi.
Poziomy A, AA i AAA oznaczają zestawy kryteriów, a nie ocenę estetyki. Spełnienie AA obejmuje również wymagania A. Podstawa INF.03 wymienia WCAG 2.0, natomiast rodzina WCAG ma późniejsze wersje, w tym 2.1 i 2.2. Przy praktycznej pracy trzeba wskazać, według której wersji i poziomu przeprowadzono ocenę. Nie wystarczy napisać ogólnego „zgodne z WCAG” po dodaniu jednego atrybutu.
Osoba niewidoma może nawigować po nagłówkach i nazwach kontrolek. Osoba słabowidząca może potrzebować powiększenia i wyraźnego kontrastu, a osoba z ograniczeniami ruchu korzystać wyłącznie z klawiatury lub innego urządzenia sterującego. Głuchy odbiorca potrzebuje tekstowego odpowiednika istotnych informacji dźwiękowych. Jedna funkcja, na przykład powiększenie liter, nie rozwiązuje wszystkich tych potrzeb.
Obrazy i równoważna informacja
Tekst alternatywny to opis znaczenia obrazu w danym kontekście, zapisany zwykle w atrybucie alt. Dla fotografii produktu może brzmieć „Czarna mysz przewodowa z dwoma bocznymi przyciskami”. Nie musi wyliczać każdego piksela. Powinien przekazać istotną informację, której odbiorca nie uzyska z sąsiedniego tekstu. Nazwa pliku IMG_0042.jpg nie spełnia tego zadania.
Obraz dekoracyjny nie dodaje informacji i powinien mieć pusty alt. Wtedy czytnik nie musi odczytywać zbędnego ozdobnika. Brak atrybutu nie jest odpowiednikiem pustego atrybutu: technologia wspomagająca może próbować odczytać nazwę pliku. To, czy obraz jest dekoracją, zależy od jego użycia. To samo zdjęcie w katalogu produktu i jako powtórzone tło może pełnić inną rolę.
<img src="img/mysz.jpg" alt="Czarna mysz z dwoma przyciskami bocznymi">
<img src="img/ozdobnik.png" alt="">
<a href="index.html"><img src="img/logo.svg" alt="Sklep komputerowy: strona główna"></a>
W trzecim przykładzie obraz jest zawartością odnośnika, więc nazwa ma wskazywać jego cel. Sam napis „logo” nie wyjaśnia, dokąd prowadzi kliknięcie. Dla złożonego schematu krótki alt może nie wystarczyć: potrzebny będzie również opis lub tabela danych w treści strony. Istotne ceny i warunki zamówienia pozostawiaj jako tekst, aby można je było odczytać i powiększyć.
Kontrast i komunikaty
Kontrast tekstu opisuje współczynnik między jego jasnością a jasnością tła. Dla zwykłego tekstu na poziomie AA WCAG wymaga co najmniej 4,5:1, a dla dużego tekstu co najmniej 3:1, z określonymi wyjątkami. Duży tekst oznacza w tym kryterium co najmniej 18 pt zwykłego pisma albo 14 pt pogrubionego. Przy typowym przeliczeniu CSS jest to odpowiednio 24 px oraz około 18,7 px.
Nie oceniamy współczynnika przez subiektywne „widzę, więc działa”. Użyj narzędzia liczącego kontrast i sprawdź rzeczywistą parę tekstu oraz tła. Na fotografii tło zmienia się w różnych miejscach, więc napis czytelny nad ciemnym fragmentem może zniknąć nad jasnym. Pomaga stałe tło podpisu lub odpowiednio dobrana przesłona. Szczegóły wyjątków opisuje W3C dla kryterium kontrastu. Kolor nie powinien być jedynym nośnikiem informacji. Błędne pole zamówienia może dostać czerwoną ramkę, lecz potrzebuje także komunikatu, na przykład „Podaj liczbę od 1 do 10”. Podobnie dostępność produktu oznaczamy tekstem „Dostępny”, nie samą zieloną kropką. Użytkownik nierozróżniający barw otrzymuje wtedy tę samą informację i wie, co poprawić.
Klawiatura, fokus i formularz
Fokus to aktualne miejsce obsługi klawiaturą. Klawisz Tab przenosi go zwykle między aktywnymi kontrolkami, a Shift z Tab cofa. Widoczny obrys pozwala zorientować się, który element zostanie uruchomiony. Usunięcie obrysu bez zamiennika sprawia, że użytkownik porusza się po stronie bez wskazania położenia. Styl dla najechania myszą nie zastępuje stylu fokusu.
a:focus-visible, button:focus-visible, input:focus-visible {
outline: 3px solid #005fcc;
outline-offset: 3px;
}
Natywny przycisk ma zachowania, których zwykły <div> nie otrzymuje automatycznie. Użyj <button> do wykonania działania i <a> do przejścia pod inny adres. Nie zamieniaj każdego napisu w element z dodatnim tabindex, bo wprowadzisz trudną do utrzymania kolejność. Kolejność klawiatury powinna odpowiadać logicznemu przebiegowi: produkt, ilość, dane klienta i zamówienie.
Etykieta pola wyjaśnia, co wpisać, i wiąże podpis z kontrolką. Użyj label z for zgodnym z id pola, tak jak w lekcji formularzy. placeholder znika podczas pisania i nie zastępuje etykiety. Komunikat błędu powinien wskazywać pole oraz sposób poprawienia, a nie ograniczać się do ogólnego „Błąd”. Po wysłaniu sprawdź także informację o wyniku operacji. Pułapka klawiaturowa to sytuacja, gdy fokus da się wprowadzić do elementu, ale nie da się z niego wyjść standardową obsługą. Ręczny test obejmuje menu, okna dialogowe i odtwarzacze, a nie tylko pola tekstowe. Sprawdź, czy żaden stały nagłówek nie zasłania aktualnej kontrolki i czy funkcje nie wymagają wyłącznie przeciągnięcia myszą.
Powiększenie i ręczna kontrola
Powiększenie tekstu do 200 procent nie powinno pozbawiać treści lub funkcji zgodnie z odpowiednim kryterium WCAG. Osobnym wymaganiem jest przelewanie treści, czyli dopasowanie układu do wąskiego obszaru bez konieczności przewijania całych akapitów w dwóch kierunkach. Dla pionowo przewijanej strony punktem odniesienia jest szerokość 320 pikseli CSS. Pewne treści, na przykład tabela danych wymagająca dwóch wymiarów, mają wyjątki.
Sprawdź sklep w wąskim oknie i przy powiększeniu przeglądarki. Czy nazwa produktu mieści się w karcie? Czy komunikat błędu nie leży pod przyciskiem? Czy formularz nadal da się wysłać? Nie blokuj skalowania w deklaracji obszaru wyświetlania. Znaczenie szerokości 320 px oraz wyjątków wyjaśnia opis przelewania treści W3C. Automatyczny skaner znajduje część błędów, na przykład brak etykiety lub za niski kontrast w prostym przypadku. Nie rozstrzygnie sam, czy opis zdjęcia prawidłowo oddaje jego znaczenie ani czy kolejność czytania jest zrozumiała. Połącz jego wyniki z testem klawiatury, powiększenia i przeglądem treści. Lista kryteriów WCAG W3C służy do określenia zakresu takiej kontroli. Na egzaminie
W pisemnym pytaniu odróżnij opis obrazu od dymka podpowiedzi: alt nie jest tym samym co title. Kontrast dotyczy konkretnej pary barw, a semantyka znaczenia struktury. Najlepsza odpowiedź wynika z potrzeb wskazanego odbiorcy, nie z ogólnej obietnicy, że strona wygląda nowocześnie.
Pułapka: pozytywny wynik walidatora HTML nie potwierdza pełnej zgodności z WCAG.
W praktyce wykonaj przejście od początku strony do wysłania formularza bez użycia myszy. Sprawdź opisy obrazów, etykiety i odczyt komunikatów. Następnie powiększ widok i popraw miejsca utraty treści. Taki test pokazuje rzeczywiste działanie witryny, a nie tylko obecność kilku atrybutów w kodzie.
Ściąga
Znaczący obraz
opis znaczenia w alt
Zwykły tekst AA
kontrast co najmniej 4,5:1
Duży tekst AA
kontrast co najmniej 3:1
Formularz
etykiety, komunikaty, instrukcje
Klawiatura
logiczna kolejność i widoczny fokus
Powiększenie
brak utraty treści przy 200 procentach
Przelewanie treści
zwykła treść przy 320 px CSS
Ocena
narzędzia oraz ręczne testy
Pobierz ściągę PDF