Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| de:modul:m291:learningunits:lu05:theorie:c_accessibility [2026/03/08 16:16] – ↷ Seite von de:modul:m291:learningunits:lu05:c_accessibility nach de:modul:m291:learningunits:lu05:theorie:c_accessibility verschoben gkoch | de:modul:m291:learningunits:lu05:theorie:c_accessibility [2026/03/08 22:22] (aktuell) – gkoch | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ====== LU05c - Accessibilitly | + | ====== LU05c – Accessibility Basics |
| + | {{: | ||
| + | |||
| + | <WRAP box round 80% center> | ||
| + | **Weiterführende Informationen: | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Was ist Accessibility (A11y)? ===== | ||
| + | |||
| + | **Accessibility** (Barrierefreiheit, | ||
| + | |||
| + | Laut WHO haben über **15 % der Weltbevölkerung** – rund 1,3 Milliarden Menschen – eine Beeinträchtigung. Dazu gehören: | ||
| + | |||
| + | * **Sehbeeinträchtigungen** – Blindheit, Sehschwäche, | ||
| + | * **Motorische Einschränkungen** – kein Maus-Einsatz, | ||
| + | * **Kognitive Einschränkungen** – Leseschwäche, | ||
| + | * **Hörbeeinträchtigungen** – relevant besonders für Audio- und Video-Inhalte | ||
| + | |||
| + | Eine schlecht zugängliche Website kann für jemanden, der einen Screenreader benutzt, komplett unbenutzbar sein – genau wie eine fehlende Rampe jemanden im Rollstuhl ausschliesst. | ||
| + | |||
| + | |||
| + | ==== Warum ist A11y wichtig? ==== | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Barrierefreiheit ist kein «Nice-to-have» mehr – sie ist aus drei Gründen relevant: | ||
| + | |||
| + | * **Inklusion: | ||
| + | * **Gesetzliche Anforderungen: | ||
| + | * **Bessere UX für alle:** Barrierefreie Massnahmen – wie klare Fehlermeldungen, | ||
| + | |||
| + | |||
| + | ===== WCAG – Der internationale Standard ===== | ||
| {{youtube> | {{youtube> | ||
| + | |||
| + | Die **Web Content Accessibility Guidelines (WCAG)** werden vom World Wide Web Consortium (W3C) entwickelt und gelten als internationaler Standard für digitale Barrierefreiheit. Sie bieten Entwickler: | ||
| + | |||
| + | |||
| + | ==== POUR – Die vier Grundprinzipien ==== | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Die WCAG sind um vier Grundprinzipien aufgebaut, die unter dem Kürzel **POUR** zusammengefasst werden: | ||
| + | |||
| + | === 1. Wahrnehmbarkeit (Perceivable) === | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Inhalte müssen für Augen, Ohren oder Screenreader erkennbar sein. | ||
| + | |||
| + | * Bilder brauchen aussagekräftige '' | ||
| + | * Videos benötigen Untertitel oder Transkripte | ||
| + | * Texte müssen ausreichend Kontrast zum Hintergrund haben (Mindest-Verhältnis: | ||
| + | |||
| + | === 2. Bedienbarkeit (Operable) === | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Die Website muss ohne Maus – also nur mit Tastatur oder Sprachsteuerung – vollständig nutzbar sein. | ||
| + | |||
| + | * Focus-Styles beibehalten (nie '' | ||
| + | * Keine blinkenden Inhalte, die Anfälle auslösen könnten | ||
| + | * In unserem Projekt: '' | ||
| + | |||
| + | === 3. Verständlichkeit (Understandable) === | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Sprache und Aufbau müssen logisch und vorhersehbar sein. | ||
| + | |||
| + | * Fehlermeldungen in Formularen müssen präzise erklären, was falsch ist (statt kryptischer Codes) | ||
| + | * Die Sprache des Dokuments muss im ''< | ||
| + | * Interaktionen sollen sich erwartungsgemäss verhalten | ||
| + | |||
| + | === 4. Robustheit (Robust) === | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Inhalte müssen auf verschiedenen Geräten und mit Hilfstechnologien (Screenreader, | ||
| + | |||
| + | * Semantisches HTML verwenden statt '' | ||
| + | * Schriftgrössen in '' | ||
| + | * ARIA-Attribute korrekt und sparsam einsetzen | ||
| + | |||
| + | ===== Screenreader ===== | ||
| + | |||
| + | Ein **Screenreader** ist ein Hilfsprogramm, | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Semantisches HTML als Grundlage ===== | ||
| + | |||
| + | Die wichtigste Grundregel der Accessibility: | ||
| + | |||
| + | > **Verwenden Sie das richtige HTML-Element für den richtigen Zweck.** | ||
| + | |||
| + | Browser und Screenreader kennen die eingebaute Semantik von HTML-Elementen. Ein ''< | ||
| + | * Per Tastatur fokussierbar (Tab-Taste) | ||
| + | * Auslösbar mit Enter und Space | ||
| + | * Für Screenreader als «Schaltfläche» erkennbar | ||
| + | |||
| + | |||
| + | <WRAP round box 80%> | ||
| + | **Erste ARIA-Regel: | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | ===== ARIA – Accessible Rich Internet Applications ===== | ||
| + | |||
| + | ARIA ist eine Sammlung von HTML-Attributen, | ||
| + | |||
| + | <WRAP center round box 80%> | ||
| + | **Drei ARIA-Konzepte: | ||
| + | |||
| + | ^ Konzept ^ Attribut ^ Beispiele ^ | ||
| + | | **Rolle** | '' | ||
| + | | **Zustand** | '' | ||
| + | | **Eigenschaft** | '' | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== aria-expanded – Zustand kommunizieren ===== | ||
| + | |||
| + | Das Attribut '' | ||
| + | |||
| + | Im HTML setzen wir '' | ||
| + | <WRAP center round box 80%> | ||
| + | <code html> | ||
| + | <button class=" | ||
| + | What is this project, and how will it help me? | ||
| + | </ | ||
| + | <p class=" | ||
| + | It's a small but mighty mission... | ||
| + | </p> | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | **Was der Screenreader vorliest:** | ||
| + | * Zugeklappt: «What is this project, Schaltfläche, | ||
| + | * Aufgeklappt: | ||
| + | |||
| + | |||
| + | ===== Tastaturbedienbarkeit ===== | ||
| + | |||
| + | Nicht alle Nutzenden arbeiten mit einer Maus. Menschen mit motorischen Einschränkungen, | ||
| + | |||
| + | |||
| + | |||
| + | ===== Praxisbeispiel: | ||
| + | |||
| + | ==== Das Problem ==== | ||
| + | <WRAP center round box 80%> | ||
| + | Im Alarado-Projekt wurde der ''< | ||
| + | |||
| + | <code css> | ||
| + | /* Alarado CSS – bisheriger Code */ | ||
| + | .switch input { | ||
| + | display: none; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Das entfernt das Eingabefeld **komplett** aus dem Accessibility Tree. Screenreader und Tastaturnavigation überspringen den Switch – er ist für Nutzende von Hilfstechnologien unsichtbar und nicht bedienbar. | ||
| + | </ | ||
| + | |||
| + | ==== Das HTML im Alarado-Projekt ==== | ||
| + | <WRAP center round box 80%> | ||
| + | <code html> | ||
| + | <label class=" | ||
| + | <input type=" | ||
| + | <span class=" | ||
| + | <span class=" | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ==== Die Lösung: Visuell verstecken, aber zugänglich halten ==== | ||
| + | |||
| + | Statt '' | ||
| + | <WRAP center round box 80%> | ||
| + | <code css> | ||
| + | /* Visuell versteckt, aber für Screenreader sichtbar */ | ||
| + | .switch input { | ||
| + | position: absolute; | ||
| + | width: 1px; | ||
| + | height: 1px; | ||
| + | margin: -1px; | ||
| + | padding: 0; | ||
| + | border: 0; | ||
| + | overflow: hidden; | ||
| + | clip: rect(0, 0, 0, 0); | ||
| + | white-space: | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Damit der Screenreader die **Rolle** und den **Zustand** des Switches versteht, ergänzen wir das HTML mit ARIA-Attributen: | ||
| + | |||
| + | <code html> | ||
| + | <label class=" | ||
| + | <input | ||
| + | type=" | ||
| + | role=" | ||
| + | aria-checked=" | ||
| + | aria-label=" | ||
| + | /> | ||
| + | <span class=" | ||
| + | <span class=" | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | Und im JavaScript aktualisieren wir '' | ||
| + | |||
| + | <code javascript> | ||
| + | const toggle = document.querySelector(' | ||
| + | |||
| + | toggle.addEventListener(' | ||
| + | const isDark = toggle.checked; | ||
| + | // Dark Mode umschalten ... | ||
| + | toggle.setAttribute(' | ||
| + | }); | ||
| + | </ | ||
| + | |||
| + | **Was der Screenreader jetzt vorliest:** | ||
| + | * «Dark Mode aktivieren, Schalter, ausgeschaltet» | ||
| + | * Nach Klick: «Dark Mode aktivieren, Schalter, eingeschaltet» | ||
| + | </ | ||
| + | |||
| + | ===== A11y-Grundsätze für jedes Projekt ===== | ||
| + | |||
| + | * Semantische HTML-Elemente verwendet (''< | ||
| + | * Sprache des Dokuments deklariert: ''< | ||
| + | * Alle interaktiven Elemente per Tastatur erreichbar (Tab-Navigation)? | ||
| + | * Focus-Styles sichtbar – '' | ||
| + | * Texte haben ausreichend Kontrast (Mindest-Verhältnis 4,5:1)? | ||
| + | * Schriftgrössen in '' | ||
| + | * Bilder haben ein aussagekräftiges '' | ||
| + | * Interaktive Elemente haben ein zugängliches Label ('' | ||
| + | * Accordion kommuniziert Zustand mit '' | ||
| + | * Toggle/ | ||
| + | * Versteckte Elemente, die zugänglich sein sollen, mit Visually Hidden – nicht '' | ||
| + | |||
| + | |||