Zum Inhalt springen
Barrierefreiheit

Barrierefreie Komponenten mit React und Tailwind

Zugängliche Komponenten bauen: semantisches HTML, Fokus-Zustände, ARIA gezielt einsetzen, Kontrast und Tastaturbedienung mit React und Tailwind CSS.

10 Min. LesezeitStand: 12. Juli 2026
BarrierefreiheitReactTailwind
Das richtige Element01
Serie 04
Licht, das den ganzen Tag bleibt
Sechs Leuchten aus einer Werkstatt in Utrecht.
Serie ansehenShowroom

Barrierefreiheit ist keine Zutat, die man am Ende darüberstreut. Sie entsteht aus der Struktur einer Komponente heraus. Wer semantisches HTML nutzt, Fokus sichtbar macht und die Tastatur ernst nimmt, baut Oberflächen, die für mehr Menschen funktionieren. Dieser Leitfaden zeigt die wichtigsten Bausteine mit React und Tailwind CSS.

Das Wichtigste in Kürze
  • Barrierefreiheit fängt beim richtigen Element an. Ein button ist ein button, kein div mit onClick.
  • Alles, was mit der Maus geht, muss mit der Tastatur gehen. Das ist der schnellste Test.
  • Der Fokusring ist kein Schönheitsfehler. Wer ihn entfernt, nimmt Menschen die Orientierung.
  • Kontrast ist messbar: 4,5 zu 1 für Fließtext, 3 zu 1 für große Schrift und Bedienelemente.
01

Mit semantischem HTML anfangen

Das richtige Element ist die halbe Miete. Ein button ist ein button, kein div mit onClick. Native Elemente bringen Fokusverhalten, Tastaturbedienung und die passende Rolle für Screenreader von sich aus mit. Das spart dir viel manuelle Nacharbeit.

Auch Struktur zählt. Überschriften in logischer Reihenfolge, nav für Navigation, main für den Hauptinhalt und Listen für Aufzählungen geben assistiven Technologien eine Landkarte deiner Seite. In React kostet das nichts extra, du wählst einfach das treffende Tag.

Ein div, das aussieht wie ein Knopf
  • Kein Fokus, die Tastatur kommt nicht hin.
  • Enter und Leertaste tun nichts.
  • Der Screenreader meldet: Gruppierung.
  • Rolle, Zustand und Tastatur baust du von Hand nach.
Ein button
  • Fokus, Tab-Reihenfolge und Ring sind da.
  • Enter und Leertaste lösen aus.
  • Der Screenreader meldet: Schaltfläche.
  • Du schreibst nur noch, was passieren soll.
02

Fokus sichtbar machen

Wer per Tastatur navigiert, muss sehen, wo er sich gerade befindet. Entferne den Fokusring deshalb niemals ersatzlos. In Tailwind steuerst du ihn gezielt über focus-visible, sodass er bei Tastaturnutzung erscheint, bei Mausklick aber nicht stört.

Eine Klasse wie focus-visible mit ring-2 und einer klaren Ringfarbe reicht oft schon. Achte auf genug Kontrast zum Hintergrund, damit der Zustand auch auf hellen Flächen deutlich bleibt. Ein gut sichtbarer Fokus ist ein Zeichen von Sorgfalt, kein Schönheitsfehler.

NameE-MailAbsenden
Tabbewegt den Ring, focus-visible macht ihn sichtbar.
So sieht die Seite aus, wenn jemand die Maus weglegt. Ohne sichtbaren Ring ist an dieser Stelle nichts zu sehen.
<button  className="rounded-lg bg-neutral-900 px-5 py-3 text-white     focus-visible:outline-none focus-visible:ring-2     focus-visible:ring-neutral-900 focus-visible:ring-offset-2"   Termin buchen</button>
Ring bei Tastatur, Ruhe bei Mausklick.
03

ARIA nur gezielt einsetzen

ARIA-Attribute ergänzen Bedeutung, die sich aus dem HTML allein nicht ergibt. Die erste Regel lautet aber: kein ARIA ist besser als falsches ARIA. Wo ein natives Element ausreicht, brauchst du keine zusätzliche Rolle.

Sinnvoll wird ARIA bei eigenen Widgets. Ein Umschalter bekommt aria-pressed, ein aufklappbares Menü aria-expanded, ein rein dekoratives Icon aria-hidden. Für Buttons ohne sichtbaren Text sorgt aria-label für eine verständliche Beschriftung. Setze diese Attribute bewusst und halte sie mit dem tatsächlichen Zustand deiner Komponente synchron.

<button   aria-pressed={aktiv}  className={aktiv ? "bg-neutral-900 text-white" : "bg-neutral-100"}   Wöchentlich</button>
Zustand ankündigen, nicht nur färben.
Kein ARIA ist besser als falschesEin aria-pressed, das nicht mit dem Zustand mitzieht, erzählt Nutzern das Gegenteil von dem, was sie sehen. Eine falsche Rolle überschreibt die richtige, die das Element von sich aus hatte. Setze Attribute nur, wenn du sie auch pflegst.
04

Tastaturbedienung mitdenken

Alles, was mit der Maus geht, sollte auch mit der Tastatur gehen. Native Buttons und Links reagieren bereits auf Enter und Leertaste. Baust du interaktive Elemente selbst, musst du diese Tasten und eine sinnvolle Tab-Reihenfolge selbst herstellen.

Bei Overlays wie Dialogen kommt der Fokus dazu. Beim Öffnen wandert er in den Dialog, beim Schließen zurück zum auslösenden Element, und solange er offen ist, bleibt er im Dialog gefangen. Diese Fokusführung entscheidet darüber, ob eine Komponente wirklich bedienbar ist.

Der Fokus im DialogDrei Regeln, und ein Overlay ist bedienbar: beim Öffnen wandert der Fokus hinein, solange er offen ist bleibt er darin, beim Schließen geht er zurück auf das Element, das ihn geöffnet hat. Das native dialog-Element bringt alle drei mit.
05

Kontrast und Farben prüfen

Text muss sich klar vom Hintergrund abheben. Als Richtwert gelten mindestens 4,5 zu 1 für normalen Text und 3 zu 1 für große Schrift. Sehr helle Grautöne auf Weiß sehen elegant aus, fallen bei diesem Test aber schnell durch.

Farbe darf außerdem nie die einzige Information sein. Ein Fehlerzustand braucht neben Rot auch ein Wort oder ein Icon, ein aktiver Link mehr als nur eine andere Farbe. So bleibt deine Oberfläche auch für Menschen mit eingeschränktem Farbsehen verständlich.

Fließtext auf Fläche2.4:1 fällt durch
Fließtext auf Fläche4.6:1 hält
Fließtext auf Fläche14.7:1 hält
Fließtext auf Fläche3.1:1 fällt durch
Richtwert: 4,5 zu 1 für Fließtext, 3 zu 1 für große Schrift und Bedienelemente.
Zwei dieser vier Kombinationen fallen durch. Beide sehen im Entwurf gut aus, und genau das ist die Falle.
06

Bilder und Bewegung berücksichtigen

Jedes inhaltstragende Bild braucht eine kurze, treffende Alternative im alt-Attribut. Rein dekorative Bilder bekommen ein leeres alt, damit Screenreader sie überspringen und den Lesefluss nicht mit Deko unterbrechen.

Bewegung sollte sich abschalten lassen. Über prefers-reduced-motion und den Hook useReducedMotion bietest du eine ruhige Variante an. Zusammen mit gutem Kontrast und klarer Struktur wird deine Komponente so für deutlich mehr Menschen nutzbar.

Ein guter alt-Text ist kurzBeschreibe, was jemand wissen muss, nicht was zu sehen ist. Bei einem Porträt unter einem Zitat reicht der Name. Wörter wie Bild oder Foto kann man weglassen, der Screenreader sagt das ohnehin dazu.
07

Der Test in fünf Minuten

Du brauchst kein Prüfwerkzeug, um die groben Fehler zu finden. Diese vier Handgriffe decken die meisten davon auf.

  1. Maus weglegen. Mit Tab durch die Seite gehen. Kommst du überall hin, und siehst du immer, wo du bist?
  2. Auf 200 Prozent zoomen. Bricht das Layout, überlappt Text, verschwindet etwas? Zoom ist kein Sonderfall, viele Menschen surfen dauerhaft so.
  3. Farben prüfen. Graue Schrift auf hellem Grund ist der Klassiker. 4,5 zu 1 für Fließtext, 3 zu 1 für große Schrift.
  4. Bilder abschalten. Was bleibt, ist das, was ein Screenreader hört. Dekoration braucht ein leeres alt, Inhalt eine kurze Beschreibung.

Barrierefrei heißt nicht schmuckloser. Es heißt, dass die Gestaltung auch trägt, wenn jemand anders bedient.

08

Wo Tailwind hilft und wo nicht

Tailwind macht eine Seite nicht barrierefrei, aber es macht die richtigen Dinge bequem. focus-visible ist eine eigene Variante, sr-only steckt als Utility drin, und über Tokens hältst du Kontraste an einer Stelle.

Was Tailwind nicht abnimmt: das richtige Element wählen, Beschriftungen setzen, Zustände ankündigen. Ein div mit hover-Klasse sieht aus wie ein Button und ist trotzdem keiner.

Teilen
Geschrieben von
Amelie RoesmannCreative DirectionLeonie RoesmannDesign Engineering

Wir bauen Websites und Web-Apps bei Systra Studios in Münster und legen die Bausteine daraus hier ab. Was in den Beiträgen steht, kommt aus echten Projekten, nicht aus einem Werbeprospekt.

Systra Studios: Webdesign aus Münster

Du kennst die Regeln.
Die Kleinarbeit steckt schon drin.

Formulare und Bedienelemente mit Beschriftungen, sichtbarem Fokus und geprüftem Kontrast. Kopieren, Texte tauschen, weiterbauen.

  • Jedes Feld hat ein label, jeder Knopf eine Beschriftung.
  • focus-visible ist gesetzt, nicht entfernt.
  • Bewegung, reduzierte Bewegung und Dark Mode sind drin.
Formular-Sections ansehen
FAQ

Häufige Fragen

Werkzeuge finden ungefähr ein Drittel der Probleme, vor allem fehlende Beschriftungen und schwachen Kontrast. Ob die Tab-Reihenfolge Sinn ergibt, ob ein Dialog den Fokus hält oder ob eine Fehlermeldung angekündigt wird, muss man selbst durchgehen. Fünf Minuten mit der Tastatur schlagen jeden Bericht.

Deine Frage war nicht dabei? Wir helfen gern weiter.

Kontakt aufnehmen