Was ist dieses Tool?
Standard-Checkboxen des Browsers sehen in jedem Browser anders aus und lassen sich nicht direkt mit CSS umgestalten, da ihr Erscheinungsbild vom Betriebssystem gezeichnet wird, nicht von reinem CSS. Der übliche Workaround besteht darin, die native Checkbox visuell zu verstecken und stattdessen ein Geschwisterelement zu gestalten, gesteuert über den :checked-Zustand der Checkbox – das Input-Element bleibt voll funktions- und barrierefrei, nur sein Erscheinungsbild ändert sich.
Dieses Tool setzt dieses Muster für drei gängige Checkbox-Stile um: eine abgerundete Box mit animiertem Häkchen, einen iOS-artigen Schiebeschalter und einen gefüllten Kreis (radiobutton-artig). Klicke im Vorschaubereich auf die Checkbox, um den markierten Zustand zu sehen, passe Größe und Akzentfarbe an und kopiere das CSS.
Quelle: Selectors Level 4, W3C — die Spezifikation, die die :checked-Pseudoklasse definiert, auf der diese Technik beruht.
Warum sollte man es nutzen?
- Live, klickbare Vorschau – schalte die Checkbox um, um genau zu sehen, wie der markierte und der nicht markierte Zustand aussehen.
- Drei unterschiedliche, gängige Stile in einem Tool: Häkchen-Box, Schiebeschalter und gefüllter Kreis.
- Das zugrunde liegende Element bleibt ein echtes <input type="checkbox">, sodass Tastaturnavigation, Formularübermittlung und Screenreader wie gewohnt funktionieren.
- Anpassbare Größe und Akzentfarbe, direkt in die CSS-Werte generiert statt als auszufüllende Variablen belassen.
- Keine Icon-Font, SVG-Datei oder Bilddatei nötig – Häkchen und Knopf werden mit einfachen CSS-Rändern und Pseudo-Elementen gezeichnet.
- Kostenlos, läuft im Browser, keine Anmeldung nötig.
Anleitung
- Wähle einen Stil: abgerundetes Häkchen, Schiebeschalter oder gefüllter Kreis.
- Ziehe den Größenregler, um die Checkbox größer oder kleiner zu machen.
- Wähle eine Akzentfarbe – sie wird zur Hintergrund- und Randfarbe des markierten Zustands.
- Klicke im Vorschaubereich auf die Checkbox, um zu bestätigen, dass sowohl markierter als auch nicht markierter Zustand gut aussehen.
- Kopiere das generierte CSS in dein Stylesheet und verwende es auf jedem <input type="checkbox">, das mit derselben Struktur wie im Vorschau-Markup umschlossen ist.
Beispiel
Eingabe
Stil: abgerundetes Häkchen · Größe: 24px · Farbe: OrangeAusgabe
.css-checkbox .mark {
width: 24px;
height: 24px;
border: 2px solid #f97316;
border-radius: 5px;
}
.css-checkbox input:checked + .mark {
background: #f97316;
}Das Checkbox-Input wird visuell versteckt; die sichtbare Box ist ein Geschwister-<span>, das über den :checked-Zustand des Inputs gestaltet wird, mit einem kleinen gedrehten Rand, der beim Markieren als Häkchen eingezeichnet wird.
Warum die native Checkbox verstecken statt entfernen
Es ist verlockend, auf das echte <input> zu verzichten und eine Checkbox nur aus einem gestalteten <div> mit Klick-Handler zu bauen, aber damit gehen Tastaturunterstützung, Formularübermittlung und Screenreader-Semantik verloren, die man sonst geschenkt bekommt. Das von diesem Tool erzeugte Muster behält das echte Checkbox-Input im Markup – nur visuell versteckt mit opacity: 0 und neu positioniert –, sodass der Browser es weiterhin in jeder wichtigen Hinsicht als echte Checkbox behandelt, während ein Geschwisterelement die sichtbare Gestaltung übernimmt.
Die drei Stile auf einen Blick
- Abgerundetes Häkchen: das vertraute Quadrat-mit-Häkchen-Muster, am häufigsten bei Formularfeldern, Zustimmungs-Checkboxen und Mehrfachauswahllisten.
- Schiebeschalter: wirkt eher wie eine sofortige Ein/Aus-Einstellung als ein Formularfeld – besser geeignet für Einstellungsbildschirme als für Checkbox-Listen.
- Gefüllter Kreis: ein minimalistisches, radiobutton-ähnliches Aussehen, nützlich, wenn eine eckige Box neben abgerundeten UI-Elementen zu wuchtig wirken würde.
An den Rest deiner Oberfläche anpassen
Die generierte Akzentfarbe wirkt sich nur auf den markierten Zustand aus – wähle die Farbe deiner Marke oder deiner Buttons, damit die Checkbox konsistent mit dem Rest der Seite wirkt. Kombiniere sie mit demselben border-radius, der auch anderswo in der Oberfläche verwendet wird, für ein stimmigeres Erscheinungsbild.
Häufig gestellte Fragen
Ist die gestylte Checkbox weiterhin barrierefrei?
Ja – das zugrunde liegende Element bleibt ein echtes <input type="checkbox">, nur visuell versteckt statt entfernt. Es erhält weiterhin den Fokus, reagiert auf Tastatureingaben (Leertaste zum Umschalten) und wird von Screenreadern korrekt angesagt, da diese das Input-Element vorlesen, nicht das gestaltete span daneben.
Warum verwendet das CSS einen Geschwisterselektor wie input:checked + .mark?
Weil die sichtbare Box ein separates Element vom eigentlichen Checkbox-Input ist, braucht CSS eine Möglichkeit, dieses Geschwisterelement anhand des Input-Zustands zu gestalten. Der +-Kombinator wählt das Element direkt nach dem markierten Input aus – die Standardtechnik, um individuelle Checkbox- und Radiobutton-Stile ohne JavaScript zu bauen.
Kann ich es in einem echten Formular verwenden, nicht nur in einer Demo?
Ja – kopiere das generierte CSS und umschließe ein echtes Checkbox-Input deines Formulars mit derselben Struktur, die im HTML/der Vorschau gezeigt wird. Da es weiterhin eine native Checkbox ist, wird sie genau wie eine ungestaltete mit dem Formular übermittelt und funktioniert mit deiner bestehenden Validierungslogik.
Warum ist das Häkchen beim abgerundeten Stil animiert?
Eine kurze Skalierungs-Animation beim Häkchen lässt den markierten Zustand bewusster und reaktionsschneller wirken als ein sofortiges Erscheinen/Verschwinden – ein gängiges Muster bei durchdachten UI-Checkboxen. Es ist eine kleine CSS-@keyframes-Regel, die mit dem restlichen generierten Code mitgeliefert wird.
Braucht der Schiebeschalter-Stil anderes HTML?
Nein – alle drei Stile verwenden dasselbe zugrunde liegende Markup (ein verstecktes Checkbox-Input plus ein Geschwisterelement für die sichtbare Form). Ein Stilwechsel in diesem Tool ändert nur die CSS-Regeln, die auf dieselbe Struktur angewendet werden, sodass du den Stil später ändern kannst, ohne dein HTML anzufassen.