Kurs HTML i CSS · Moduł 10: Dostępność (a11y)
Czym jest dostępność stron internetowych (a11y)?
W tej lekcji4
Wyobraź sobie, że budujesz świątynię w Starożytnym Egipcie. Czy chciałbyś, żeby mogła ją odwiedzić tylko wybrana grupa ludzi, czy raczej wszyscy - od faraona po zwykłego rybaka? Dostępność stron internetowych (accessibility, w skrócie a11y) to idea, że każdy użytkownik - niezależnie od swoich możliwości - powinien mieć równy dostęp do treści w internecie.
Dlaczego dostępność jest ważna?
Około 15% populacji świata żyje z jakąś formą niepełnosprawności. To ponad miliard ludzi! Mogą to być osoby:
- Niewidome lub słabowidzące - korzystają z czytników ekranowych (screen readers)
- Niesłyszące - potrzebują napisów do multimediów
- Z ograniczoną sprawnością ruchową - nawigują klawiaturą, nie myszką
- Z trudnościami poznawczymi - potrzebują prostego, czytelnego designu
- Z tymczasowymi ograniczeniami - złamaną ręką, jasne słońce na ekranie
Dostępność to nie tylko etyczny obowiązek - to również wymóg prawny w wielu krajach (np. European Accessibility Act w UE).
WCAG 2.1 - Standardy dostępności
WCAG (Web Content Accessibility Guidelines) to międzynarodowy standard stworzony przez W3C. Opiera się na czterech filarach, które można zapamiętać akronimem POUR:
1. Perceivable (Postrzegalność)
Treści muszą być prezentowane w sposób dostępny dla zmysłów użytkownika.
1<!-- ŹLE - brak tekstu alternatywnego -->
2<img src="piramida.jpg">
3
4<!-- DOBRZE - opis dla czytników ekranowych -->
5<img src="piramida.jpg" alt="Wielka Piramida w Gizie o zachodzie słońca">2. Operable (Funkcjonalność)
Interfejs musi być możliwy do obsługi przez różne metody nawigacji.
1<!-- Przycisk dostępny z klawiatury -->
2<button onclick="openMenu()">Otwórz menu</button>
3
4<!-- Link z widocznym focusem -->
5<a href="/kontakt" class="nav-link">Kontakt</a>3. Understandable (Zrozumiałość)
Treści i interfejs muszą być zrozumiałe dla użytkowników.
1<!-- Określenie języka strony -->
2<html lang="pl">
3
4<!-- Czytelne etykiety formularzy -->
5<label for="email">Adres e-mail:</label>
6<input type="email" id="email" name="email">4. Robust (Solidność)
Treści muszą być kompatybilne z różnymi technologiami wspomagającymi.
1<!-- Poprawna struktura HTML -->
2<!DOCTYPE html>
3<html lang="pl">
4<head>
5 <meta charset="UTF-8">
6 <title>Muzeum Egipskie</title>
7</head>
8<body>
9 <header>
10 <nav>...</nav>
11 </header>
12 <main>...</main>
13 <footer>...</footer>
14</body>
15</html>Poziomy zgodności WCAG
WCAG definiuje trzy poziomy zgodności:
- Poziom A - Minimalne wymagania (np. tekst alternatywny dla obrazów)
- Poziom AA - Zalecany standard (np. kontrast kolorów 4.5:1)
- Poziom AAA - Najwyższy standard (np. kontrast 7:1)
Większość przepisów prawnych wymaga poziomu AA.
Pierwsze kroki w dostępności
Najważniejsze zasady na początek:
- Używaj semantycznego HTML -
<nav>,<main>,<article>zamiast samych<div> - Dodawaj tekst alternatywny - atrybut
altdla obrazów - Zapewniaj kontrast kolorów - tekst musi być czytelny
- Dbaj o nawigację klawiaturową - wszystko musi być dostępne z klawiatury
- Używaj etykiet w formularzach -
<label>powiązany z<input>
Tak jak starożytni Egipcjanie projektowali świątynie dostępne dla wszystkich pielgrzymów, tak my powinniśmy tworzyć strony dostępne dla wszystkich użytkowników internetu.
Kod do tej lekcji: index.html
1<!DOCTYPE html>
2<html lang="pl">
3<head>
4 <meta charset="UTF-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <title>Wprowadzenie do dostepnosci</title>
7 <link rel="stylesheet" href="style.css">
8</head>
9<body>
10 <h1>Czym jest dostepnosc (a11y)?</h1>
11
12 <section>
13 <h2>Przyklad 1: Obraz BEZ tekstu alternatywnego</h2>
14 <img src="https://placehold.co/300x200/d4af37/1a1a2e?text=Piramida" >
15 <p class="bad">Brak atrybutu alt - czytnik ekranowy nie wie co jest na obrazku!</p>
16 </section>
17
18 <section>
19 <h2>Przyklad 2: Obraz Z tekstem alternatywnym</h2>
20 <img src="https://placehold.co/300x200/d4af37/1a1a2e?text=Piramida"
21 alt="Wielka Piramida w Gizie na tle zachodzacego slonca">
22 <p class="good">Atrybut alt opisuje zawartosc obrazu</p>
23 </section>
24
25 <section>
26 <h2>Przyklad 3: Formularz dostepny vs niedostepny</h2>
27
28 <div class="comparison">
29 <div>
30 <h3 class="bad">Niedostepny</h3>
31 <input type="text" placeholder="Wpisz imie">
32 </div>
33 <div>
34 <h3 class="good">Dostepny</h3>
35 <label for="name">Imie:</label>
36 <input type="text" id="name" name="name">
37 </div>
38 </div>
39 </section>
40
41 <section>
42 <h2>Przyklad 4: Semantyczny HTML</h2>
43 <header>
44 <nav aria-label="Przykladowa nawigacja">
45 <ul>
46 <li><a href="#section1">Sekcja 1</a></li>
47 <li><a href="#section2">Sekcja 2</a></li>
48 </ul>
49 </nav>
50 </header>
51 <main>
52 <p>Semantyczne znaczniki pomagaja czytnikom ekranowym.</p>
53 </main>
54 </section>
55</body>
56</html>Widzisz błąd w tej lekcji?
Sprawdź się
Odpowiedz na pytania z tej lekcji. Wybierz odpowiedź, a od razu zobaczysz, czy jest poprawna.
1. Co oznacza skrót a11y w kontekście web developmentu?
2. Jakie są cztery filary WCAG 2.1 (akronim POUR)?
To 2 z 3 pytań do tej lekcji. Pozostałe rozwiążesz w grze.
Zadania praktyczne w grze
- Edytor kodu
Popraw dostępność strony: dodaj alt do obrazu, label do pola tekstowego, zamień div na nav z aria-label, i dodaj lang="pl" do html.
- Klikanie w kolejności
Ułóż poprawny znacznik obrazu z tekstem alternatywnym: