Bewährte Praktiken für HTML and CSS
===================================
Code und Navigation strukturieren
---------------------------------
Denkt bei der Strukturierung eurer Inhalte an die Code-Hierarchie, damit
Screen Reader und Personen, die nur über die Tastatur verfügen, über Tabulatoren
in einer logischen und vorhersehbaren Reihenfolge auf interaktive Elemente
zugreifen können. Beginnt mit der Kopfzeile, gefolgt von der Hauptnavigation,
dann der Seitennavigation (von links nach rechts und von oben nach unten) und
enden Sie mit der Fußzeile. Ziel ist es, Personen über die Tastatur eine
vergleichbare Benutzung zu ermöglichen wie Personen, die eine Maus benutzen.
Semantisches HTML
-----------------
Verwendet native HTML-Elemente so oft wie möglich und verwendet sie für den
richtigen Zweck. Diese Elemente bieten integrierte Vorteile für die
Barrierefreiheit. Sie informieren Personen mit Screen-Reader darüber, wo sie
sind und welche Interaktionen ihnen in diesem Kontext zur Verfügung stehen.
Abgesehen von einer erhöhten Zugänglichkeit werden die Seiten auch einfacher zu
entwickeln und zu warten sein, besser auf Mobilgeräten funktionieren und die
Suchmaschinenoptimierung verbessern.
.. code-block:: html
Page Title
My Blog Posts
Article Title
content
Article Title
content
Klare Sprache
-------------
Berücksichtigt beim Hinzufügen von Inhalten kognitive Einschränkungen,
Personen, deren Erstsprache nicht die Sprache ist, in der Ihre Inhalte
geschrieben sind und Personen, die sich die Inhalte mit einem Screen-Reader
erschließen. Vermeidet nach Möglichkeit Bindestriche, Abkürzungen, Akronyme
(zumindest beim ersten Mal) und Tabellenlayouts, wenn keine Tabelleninhalte
vorhanden sind. Verwendet bei Abkürzungen das native ````-Element mit dem
``title``-Attribut.
.. code:: html
HTML
In Sphinx könnt Ihr dies erreichen mit der ``abbr``-Rolle::
:abbr:`HTML (HyperText Markup Language)`
Aussagekräftige Textbeschriftungen
----------------------------------
Berücksichtigt beim Beschriften von Elementen sehbehinderte Personen und stellt
sicher, dass für Screen-Reader ein Textkontext vorhanden ist.
.. code-block:: html
Zugängliche Tabellen
--------------------
* Gebt Tabellenüberschriften immer mit ``
``-Elementen an und stellt sicher,
dass sie herausragen.
* Verwendet bei Bedarf das Attribut ``scope`` um anzugeben, ob es sich um
Überschriften für Zeilen oder Spalten handelt.
* Verwendet alternativen Text zusammen mit Tabellen für sehbehinderte Personen.
* Für die Beschreibung der Tabelle wird ``
`` bevorzugt, aber
``
`` funktioniert auch.
Wenn die CSS-Eigenschaft ``display`` die ursprüngliche Semantik einer Tabelle
außer Kraft setzt, :abbr:`z.B.` durch :samp:`display: grid`, könnt ihr die
ARIA-``table``-Rolle verwenden, um die Semantik wieder hinzuzufügen. Die
ARIA-Rollen ``table``, ``rowgroup``, ``row``, ``columnheader`` und ``cell`` sowie die ARIA-Attribute ``aria-describedby``, ``aria-label``, ``aria-colcount`` und
``aria-rowcount`` kennzeichnen die Elemente einer nicht-interaktiven
Tabellenstruktur, die in Zeilen und Spalten angeordnete Daten enthält, ähnlich
wie die nativen HTML-Elemente.
.. seealso::
* `Accessible Rich Internet Applications (WAI-ARIA): table role
`_
* `MDN Web Docs: ARIA table role
`_
Unterscheiden zwischen Mäusen und Touchscreens
----------------------------------------------
Ihr könnt die Gestaltung von Links, Tasten :abbr:`etc. (etcetera)` einfach mit
der `hover `_-Funktion variieren,
je nachdem ob euer Publikum eine Maus oder einen Touchscreen verwendet. Dies
funktioniert in den meisten aktuellen Browsern gut, bei einigen
Android-Versionen emuliert langes Drücken jedoch *Hover*, sodass die
Medienabfrage ``hover: hover`` wahr bewertet wird. Daher sollte auch noch eine
zweite Abfrage nach ``pointer: fine`` erfolgen:
.. code-block:: css
.some-component {
/* Stil für Touchscreens, einschließlich Android-Geräte */
}
@media (hover: hover) and (pointer: fine) {
.some-component {
/* Stil für Mäuse und ähnliche Geräte */
}
}
.. seealso::
* `Media features
`_
* `Detecting Hover-Capable Devices
`_
Multimedia-Textalternativen
---------------------------
Jedes Bild, das nicht dekorativ ist, sollte mit ``alt``-Text und einer
aussagekräftigen Beschreibung des Bildes sowie einem ``title``-Attribut versehen
sein. Ihr könnt auch `aria-labelledby
`_
zusammen mit dem ``id``-Attribut verwenden.
Für dekorative Bilder solltet ihr ein leeres ``alt``-Attribut verwenden, da
andernfalls der Screen-Reader die gesamte Bild-URL liest.
Audio-Alternativen
------------------
Stellt Videos mit Untertiteln oder Transkriptionen in Audiodateien bereit:
.. code-block:: html
Schriftsymbolbibliotheken
-------------------------
Wir sind bei der Verwendung von Schriftsymbolbibliotheken auf zwei verschiedene
Anwendungsfälle gestoßen, die ihr berücksichtigen solltet:
Dekorative Symbole
werden nur zu dekorativen Zwecken verwendet. Wenn sie von der Seite entfernt
würden, würden Personen Eure Seite weiterhin verstehen und verwenden
können.
In diesem Fall kann dem Element ein ``aria-hidden="true"``-Attribut
hinzugefügt werden, :abbr:`z.B. (zum Beispiel)`:
.. code-block:: html
Semantische Symbole
sind solche, mit denen bedeutendes vermittelt werden soll, :abbr:`z.B. (zum
Beispiel)` für Button, Formularelemente :abbr:`etc. (etcetera)`
Neben dem ``aria-hidden="true"``-Attribut sollten zwei weitere Ergänzungen
hinzugefügt werden:
* eine Textalternative :abbr:`z.B. (zum Beispiel)` in einem ````-Tag,
das via CSS ausgeblendet wird.
* ein ``title``- Attribut auf dem Symbol, um einen Tooltip für sehende
Personen bereitzustellen.
.. code-block:: html
"Delete this item?
Alternativ kann SVG mit JavaScript verwendet werden mit. In diesem Fall wird
durch das ``title``-Attribut folgende drei Elemente hinzugefügt:
* ARIA-Rolle ``role="img"``
* ``title``-Tag mit ``id``-Attribut
* ``aria-labelledby``-Attribut
Aus
.. code-block:: html
wird
.. code-block:: html
.. seealso::
* Sara Soueidan: `Accessible Icon Buttons
`_
* `Font Awesome Accessibility
`_