
[ad_1]
Hast du dich schon immer gefragt, wie man Checkboxen und Radiobuttons gestalten kann, ohne dabei JavaScript zu verwenden? Dank CSS3 kannst du dies! Hier ist, was wir erstellen werden:
Sie sehen gerade einen Platzhalterinhalt von Standard. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf den Button unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Wenn du auf der Suche nach Grafiken bist, die du in deinem Formular als UI Elemente verwenden kannst, schau dir doch die UI Kits, die bei Envato Elements verfรผgbar sind an. Anderenfalls, hol dir eine Tasse Kaffee und starte mit diesem Tutorial!

1. Verstehen des Prozesses
Empfohlener Artikel: The 30 CSS Selectors you Must Memorize
Fรผr diejenigen, die sich mit CSS vertraut fรผhlen und nur einen Schub in die richtige Richtung, hier ist die wichtigste Zeile des CSS des gesamten Tutorials:
input[type="checkbox"]:checked + label {
}Nun, fรผr diejenigen die mehr Richtung benรถtigen, fรผrchtet euch nicht und lest weiter!
Also, zรผruck zum Thema. Was genau machen wir? Nun ja, durch den genialen CSS3 pseudo Selektor :checked kรถnnen wir ein Element anpeilen und bekommen den Status ob es angehakt oder abgehakt ist. Wir kรถnnen den angrenzenden Bruder, also den + Selektor von CSS2.1 verwenden, um das Element, dass sich direkt nach der Checkbox oder dem RadioButton befindet, anzuvisieren. In unserem Fall ist dies das Label.
2. Einrichten unseres HTML
Jetzt starten wir damit, unsere HTML und CSS Dateien (oder wie auch immer du deine Styles verwaltest) und starten mit der Arbeit. Ich gehe davon aus, du weiรt wie man dies macht, also gehe ich nicht nรคher darauf ein.
Fรผr den Zweck, damit du auf deinen eigenen Weg kommst, demonstriere ich nur die Technik an einer Checkbox, aber der Ablauf fรผr RadioButtons ist identisch, und auch in der Quelle inkludiert.
Okay, fangen wir endlich an, sollen wir? Wir starten mit der Erstellung unserer Checkbox-Eingabe, gefolgt von einem Label.
<input type="checkbox" /> <label>Styled Check Box</label>
Nur fรผr den Fall, dass du nicht genug รผber das <label> Element weiรt, du musst es mit einem Input verknรผpfen, damit du mit dem Input รผber das Label interagieren kannst. Dies funktioniert mit for="" und der Input ID.
<input type="checkbox" id="c1" name="cc" /> <label for="c1">Check Box 1</label>
Ich werde auch ein <span> Element innerhalb des Labels setzen, dies ist eine persรถnliche Vorliebe und nichts anderes, aber das wird sich klarstellen in Schritt 3.
3. Warum wir hier sind: CSS
Hier beginnt der eigentliche Spaร. Zuerst erledigen wir die Grundlage des gesamten Tutorials, indem wir die aktuelle Checkbox verstecken.
input[type="checkbox"] {
display:none;
}Wenn dies erledigt ist, kรถnnen wir das Label personalisieren, aber wir personalisieren eher mehr das span Element innerhalb des Labels. Dies mache ich deshalb, damit ich mehr Kontrolle รผber die exakte Position der Checkbox habe. Ohne dem, wรผrdest du mรถglicherweise ein Hintergrundbild in einem Label direkt verwenden und das korrekte Positionieren kรถnnte schwierig werden.
input[type="checkbox"] {
display:none;
}
input[type="checkbox"] + label span {
display:inline-block;
width:19px;
height:19px;
background:url(check_radio_sheet.png) left top no-repeat;
}So, lass mich dies kurz erklรคren. Als erstes, beachte den Hintergrund. Ich habe ein kleines Spritesheet fรผr diese, also alles was ich zu tun habe, ist die Hintergrundposition dieses Span Elements zu setzen. Das span selbst, ist genau die Breite und Hรถhe wie jedes “Sprite” in dem Sheet. Dies macht es sehr einfach jeden einzelnen Status zu definieren.

Das ist der Rest des CSS, personalisiert auf mein Styling. Dies ist reine รsthetik und trifft meinen Geschmack.
input[type="checkbox"] {
display:none;
}
input[type="checkbox"] + label span {
display:inline-block;
width:19px;
height:19px;
margin:-2px 10px 0 0;
vertical-align:middle;
background:url(check_radio_sheet.png) left top no-repeat;
cursor:pointer;
}4. Funktionstรผchtig machen
Es ist nicht mehr viel Arbeit รผbrig, also lass uns dies erledigen. Das Letzte was zu tun ist, ist den Status fรผr das Element, wenn der Input angehakt ist, zur Verfรผgung zu stellen. Optional auch fรผr beim hovern. Dies ist ziemlich einfach, seh es dir an!
input[type="checkbox"] {
display:none;
}
input[type="checkbox"] + label span {
display:inline-block;
width:19px;
height:19px;
margin:-2px 10px 0 0;
vertical-align:middle;
background:url(check_radio_sheet.png) left top no-repeat;
cursor:pointer;
}
input[type="checkbox"]:checked + label span {
background:url(check_radio_sheet.png) -19px top no-repeat;
}Sie sehen gerade einen Platzhalterinhalt von Standard. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf den Button unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Beachte, weil ich ein Spritesheet verwendet habe, muss ich nur die Hintergrundposition รคndern. Beachte auch, alles was ich tun musste, um den Style des Span Elemnts zu รคndern, wenn du die Checkbox anhakst, war das Verwenden des CSS3 :checked pseudo Selektor.
Kurze Anmerkung zur Browser Unterstรผtzung
Pseudo Selektoren haben eine super Unterstรผtzung รผber alle Browser, aber รผbliche Einschrรคnkungen gelten und der Fallback ist ziemlich elegant:


Frรผhe mobile Browser sind auch ein Problem – der Support von :checked ist nicht klar. Mobile Safare pre iOS 6 bietet beispielsweise keine Unterstรผtzung.
Fazit
Also, wir sind fertig, richtig? Gut, lass uns zuerst doppelt kontrollieren. Als erstes das HTML:
<input type="checkbox" id="c1" name="cc" /> <label for="c1"><span></span>Check Box 1</label>
Sieht deins gleich aus? Vergiss nicht aufs Hinzufรผgen des <span>! Wenn du selbst damit herumexperimentierst, empfehle ich dir neue oder andere Wege zu finden, wie man diesen Teil erledigt. Ich wรผrde es lieben, wenn ich sehe was du daraus gemacht hast, dass es effizienter ist. Nun das CSS:
input[type="checkbox"] {
display:none;
}
input[type="checkbox"] + label span {
display:inline-block;
width:19px;
height:19px;
margin:-2px 10px 0 0;
vertical-align:middle;
background:url(check_radio_sheet.png) left top no-repeat;
cursor:pointer;
}
input[type="checkbox"]:checked + label span {
background:url(check_radio_sheet.png) -19px top no-repeat;
}Alles vorhanden? Perfekt. Beachte bitte, dass vieles dieses Stylings auf meinen Style personalisiert ist, den ich fรผr die Demo-Dateien erstellt habe. Ich ermutige dich, dass du deine eigenen erstellst und mit der Platzierung und Prรคsentation dieser expermentierst.
Zusammenfassend, das wichtigste, dass du von dieser ersten Zeile vom CSS, das ich ganz oben geschrieben habe, mitnehmen sollst:
input[type="checkbox"]:checked + label {
}Wenn du dies verwendest, kannst du verschiedenste Dinge mit ย vollstรคndigem Auftritt erstellen. Die Mรถglichkeiten mit :checked gehen รผber Checkboxen und Radios in Formularen darรผber hinaus, aber ich lasse dies hier so stehen und lass dich selbst damit herumexperimentieren. Einige Dinge zum herumprobieren:
- Hinzufรผgen eines 2x Spritesheet fรผr Retina-Bildschirmen
- Verwende SVG anstatt einer Bitmap
Ich hoffe dieser kurze Artikel hat dir gefallen und du nimmst das, was du hier gesehen hast und erweiterst/verbesserst es!
[ad_2]

