Radio-Button
Definition: Ein Radio-Button (auch: Optionsfeld, Radio-Schaltfläche) ist ein Formularelement das die Einzelauswahl aus einer Gruppe von sich gegenseitig ausschließenden Optionen ermöglicht – nur eine Option der Gruppe kann gleichzeitig ausgewählt sein; die Auswahl einer Option deselektiert automatisch die zuvor gewählte. Der Name stammt von mechanischen Stationstastenleisten älterer Autoradios und Rundfunkempfänger: das Drücken einer Stationstaste löste alle anderen aus; Doug Engelbart (Stanford Research Institute; Menlo Park; CA) und Bill English implementierten dieses Interaktionsprinzip in die frühe Benutzeroberfläche des Xerox Alto (Xerox PARC; Palo Alto; CA; 1973) als Software-Pattern. Radio-Button-Anwendungsfälle: wenn der Nutzer genau eine Option aus 2–7 Möglichkeiten wählen soll; wenn alle Optionen gleichzeitig sichtbar sein sollen (Vergleich der Optionen wichtig); wenn eine Vorauswahl sinnvoll ist (häufigste/empfohlene Option vorab gewählt); Abgrenzung zu anderen Form-Controls: Checkbox (Mehrfachauswahl möglich; jede Checkbox unabhängig von anderen); Select/Dropdown (viele Optionen; platzsparend; aber: alle Optionen versteckt bis geöffnet; erschwerter Vergleich); Segmented Control/Button-Group (visuell modernere Alternative für 2–5 Optionen; besonders auf Mobile; bessere Touch-Targets); Toggle-Switch (für binäre Entscheidungen mit sofortiger Wirkung; kein Submit-Button nötig). Design-Richtlinie: 2–7 Optionen für Radio-Button; weniger als 2: nicht sinnvoll; mehr als 7: Select-Dropdown bevorzugen; Ausnahme: wenn Optionen stark unterschiedlich sind und Vergleich kritisch ist können mehr als 7 Radio-Buttons sinnvoll sein.
Erläuterung
Das Radio-Button-Pattern entstammt direkt der frühen GUI-Geschichte. Das Xerox Alto (Xerox PARC; Palo Alto; CA; 1973; Alan Kay/Butler Lampson/Charles Thacker) verwendete bereits Radio-Button-ähnliche Muster für exklusive Optionen in Dialogboxen; das Apple Macintosh System 1.0 (Apple Computer; Cupertino; CA; 1984; Susan Kare als Icon- und Interface-Designerin) formalisierte Radio-Buttons als runde Elemente (im Gegensatz zu quadratischen Checkboxen) in der Human Interface Guidelines (Apple HIG; erste Veröffentlichung 1985); das runde vs. quadratische Unterscheidungsmerkmal kommuniziert die semantische Differenz: rund = Einfachauswahl, quadratisch = Mehrfachauswahl; dieses Konvention ist bis heute in allen gängigen Design-Systemen implementiert. Luke Wroblewski (Product Director; Google; Mountain View; CA; «Web Form Design: Filling in the Blanks», Rosenfeld Media, 2008) analysierte Radio-Button-Usability in Webformularen: Radio-Buttons sind gegenüber Dropdowns vorzuziehen wenn (1) weniger als 7 Optionen vorhanden sind; (2) Nutzer die Optionen miteinander vergleichen müssen; (3) die Optionen nicht aus einem einzigen Oberbegriff bestehen; Wroblewski dokumentierte dass vorausgewählte Radio-Buttons (Defaults) die Formularabschlussrate erhöhen da Nutzer weniger Entscheidungsaufwand haben. Die W3C Web Accessibility Initiative (WAI; Cambridge; MA; WAI-ARIA Authoring Practices Guide 1.2; 2023; Joanmarie Diggs und James Nurthen als Hauptautoren) spezifiziert das Radio-Group-Pattern mit den Keyboard-Interaktionen: Pfeiltasten navigieren zwischen Radio-Buttons einer Gruppe (nicht Tab!) und wählen gleichzeitig aus; Tab navigiert zur nächsten Formulargruppe; Space wählt fokussierten Radio-Button aus. Baymard Institute (Aarhus; Dänemark; «Mobile Form Usability», 2023) analysierte Radio-Button-Performance auf Mobile: native HTML-Radio-Buttons haben auf Mobile oft zu kleine Touch-Targets (Standard-Rendering: 16–20px; WCAG-Minimum: 44×44px); custom-gestaltete Radio-Button-Karten (volle Breite; großes Touch-Target) erhöhen Mobile-Formular-Completion-Rate signifikant; visuelle Card-Radio-Buttons (gesamte Karte ist das klickbare Element) reduzieren Tipp-Fehler um 31% gegenüber kleinen Standard-Radio-Buttons. Google Material Design 3 (2021; Google; Mountain View; CA) differenziert zwischen Radio (Standard für Listen-Einzelauswahl), Chip Groups (für kompaktere Auswahl-Sets), und Segmented Buttons (für 2–5 Optionen mit einzeiliger Darstellung); die Wahl zwischen diesen Varianten richtet sich nach Kontext und Anzahl der Optionen.
HTML-Implementierung, Semantik und Keyboard-Navigation
- Korrektes HTML für Radio-Buttons: Minimale korrekte Implementierung: <fieldset><legend>Zahlungsmethode</legend><label><input type="radio" name="payment" value="card"> Kreditkarte</label><label><input type="radio" name="payment" value="paypal"> PayPal</label><label><input type="radio" name="payment" value="bank"> Überweisung</label></fieldset>; name-Attribut: alle Radio-Buttons einer Gruppe müssen identisches name-Attribut haben; Browser verwaltet die Exklusivität automatisch; value-Attribut: wird beim Formular-Submit übermittelt; sollte maschinen-lesbare ID sein nicht der Label-Text; id-for-Verknüpfung: <input type="radio" id="card" name="payment" value="card"><label for="card">Kreditkarte</label> statt Label-as-Wrapper; beide Varianten valide; Wrapper-Variante ermöglicht größeren klickbaren Bereich; fieldset/legend: fieldset gruppiert die Optionen semantisch; legend ist der Gruppenname der von Screen-Readern als Kontext vor jeder Option gelesen wird: Screen-Reader: «Zahlungsmethode, Kreditkarte, Radio-Button, 1 von 3»; WCAG 1.3.1 Info and Relationships (Level A): Formular-Gruppenbeziehungen müssen durch semantische Struktur erkennbar sein; fieldset/legend ist die semantisch korrekte Lösung; checked-Attribut für Default-Selektion: <input type="radio" name="payment" value="card" checked>; Browser-native Exklusivität: Browser deselektiert alle anderen name-gleichen Radios automatisch; kein JavaScript nötig
- WAI-ARIA Radio-Group-Pattern und Keyboard-Navigation: ARIA-Pattern wenn natives HTML nicht möglich (Custom Components): <div role="radiogroup" aria-labelledby="payment-label"><div id="payment-label">Zahlungsmethode</div><div role="radio" aria-checked="false" tabindex="-1">Kreditkarte</div><div role="radio" aria-checked="true" tabindex="0">PayPal</div></div>; role="radiogroup": auf dem Container; Äquivalent zu <fieldset>; role="radio": auf jedem Radio-Button; aria-checked="true/false": Zustand des einzelnen Radio-Buttons; tabindex-Management: aktivierter Radio-Button erhält tabindex="0"; alle anderen tabindex="-1"; nur ein Tab-Stop pro Gruppe; innerhalb der Gruppe: Pfeiltasten; Keyboard-Interaction (WAI-ARIA APG): Tab/Shift+Tab: bewegt Fokus zur Gruppe/aus der Gruppe; innerhalb der Gruppe: Pfeil-Runter/Rechts: nächster Radio-Button (zirkulär); Pfeil-Oben/Links: vorheriger Radio-Button (zirkulär); bei Bewegung: SOFORTIGE Selektion des fokussierten Elements (nicht erst Space drücken); Space: wählt fokussierten Radio-Button aus (wenn noch nicht ausgewählt); kein Enter nötig; Screen-Reader-Announcement: «PayPal, Radio-Button, ausgewählt, 2 von 3»
- Custom Radio-Button CSS: Nativen Radio-Button visuell ersetzen: /* Nativen Radio-Button verstecken aber zugänglich halten */ input[type="radio"] { appearance: none; width: 20px; height: 20px; border: 2px solid #6B7280; border-radius: 50%; position: relative; cursor: pointer; } input[type="radio"]:checked { border-color: #2563EB; background-color: #2563EB; } input[type="radio"]:checked::after { content: ''; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 8px; height: 8px; border-radius: 50%; background: white; } input[type="radio"]:focus-visible { outline: 2px solid #2563EB; outline-offset: 2px; } WCAG 1.4.11 Non-Text-Contrast (Level AA; min. 3:1): Radio-Button-Rahmen gegen Hintergrund muss Kontrastverhältnis ≥3:1 erfüllen; #6B7280 (Gray-500) auf Weiß: 4.62:1 ✓; Touch-Target: Klickbarer Bereich mindestens 44×44px (WCAG 2.5.5); padding auf Label erhöhen: label { padding: 12px 16px; display: flex; align-items: center; gap: 12px; cursor: pointer; } – gesamtes Label-Bereich ist klickbar; nicht nur der Radio-Button selbst
Radio-Button vs. Alternativen und E-Commerce-Anwendungen
- Wann Radio-Button, Checkbox, Select oder Segmented Control: Entscheidungsmatrix: Radio-Button: Einfachauswahl; 2–7 Optionen; Vergleich wichtig; statische Auswahl (kein Sofort-Effekt); Beispiel: Zahlungsmethode; Versandoption; Checkbox: Mehrfachauswahl möglich; jede Option unabhängig; Beispiel: Newsletter-Präferenzen; Zustimmungs-Checkboxen; Select/Dropdown: Einfachauswahl; mehr als 7 Optionen; platzbegrenzt; Optionen aus gemeinsamem Oberbegriff; Beispiel: Land auswählen (195 Länder); Geburts-Jahr; Segmented Control (Button-Group): Einfachauswahl; 2–5 Optionen; kompakter als Radio-Buttons; besser auf Mobile (größere Touch-Targets); Beispiel: S/M/L/XL Größenauswahl; Sorting-Options (Relevanz/Preis/Bewertung); Toggle-Switch: Binäre Auswahl (An/Aus); Soforteffekt ohne Submit; Beispiel: Dark-Mode-Toggle; Notification-Ein/Ausschalten; Radio-Button-Card (Karten-Radio): gesamte Karte ist Radio-Button; für visuelle Optionsgruppen; Beispiel: Tarif-Auswahl (Basic/Pro/Enterprise); Planungszeitraum (Monatlich/Jährlich); erhöhte Touch-Targets; bessere Mobile-UX
- Default-Selektion und Wahlpflicht: Wann vorauswählen (Default): wenn eine Option klar empfohlen ist oder am häufigsten gewählt wird; Versand: Standard-Versand vorausgewählt (Express als Upgrade); Zahlungsmethode: beliebteste Methode vorausgewählt; E-Commerce: Baymard Institute (2023): Vorauswahl der günstigsten/schnellsten Versandoption erhöht Checkout-Completion; verhindert unnötige Nutzerstutzigkeit; Barry Schwartz «The Paradox of Choice» (Ecco Press, 2004): gute Defaults verringern Entscheidungsaufwand; schlechte Defaults können als manipulativ wahrgenommen werden (Opt-Out-Designs für Datenschutz); Wann KEINE Vorauswahl: wenn der Nutzer eine bewusste Entscheidung treffen muss (Datenschutz-Zustimmung; rechtlich bindende Optionen); wenn keine Option eindeutig besser ist und Vorauswahl suggestiv wäre; WCAG 3.3.4 Error Prevention (Level AA): für Formulare mit rechtlichen oder finanziellen Konsequenzen: Nutzer sollte Eingaben überprüfen und korrigieren können; Vorauswahl für unwichtige Versandoption ≠ Problem; Vorauswahl für kostenpflichtige Zusatzleistung = Dark Pattern (deceptive design)
- Radio-Button-Cards im E-Commerce: Tarif-Auswahl (Pricing-Page): jede Option als vollständige Card; Plan-Name, Preis, Feature-Liste; gesamte Card ist klickbares Radio-Button-Target; ausgewählte Card: Rahmen in Primärfarbe; Hintergrund-Highlight; häufige Implementierung: JavaScript + CSS-Klasse statt nativem input; Accessibility-Anforderung: aria-checked oder native input type="radio" im DOM; auch wenn visuell versteckt; E-Commerce Produktvarianten: Farb-Swatches (Farb-Kreise als Radio-Button-Ersatz; WCAG: Farbe allein nicht ausreichend → zusätzlicher Label-Text oder Tooltip; outlines für aktuell gewählte Option); Größen-Auswahl (S/M/L/XL als Button-Grid; nicht verfügbare Größen ausgegraut + aria-disabled="true" + durchgestrichen); Payment-Selection (Kreditkarte/PayPal/SEPA als Icon-Cards mit Logo; Radio-Button-Semantik; höhere Trust-Signale durch Logos); Shipping-Options (Standard/Express/Same-Day mit Preis, Lieferzeit, Icon; Standard vorausgewählt; Radio-Button-Cards mit vollständiger Klickfläche)