Ich würde den Rat von SW4's Antwort . Nicht mehr: Volomike's Antwort ist allen Antworten hier weit überlegen (beachten Sie meinen Verbesserungsvorschlag im Kommentar zu der Antwort). Lesen Sie diese Antwort weiter, wenn Sie neugierig auf alternative Ansätze sind, die diese Antwort kommentiert.
Blenden Sie zunächst das Kontrollkästchen aus und überdecken Sie es mit einem benutzerdefinierten Bereich, indem Sie dieses HTML vorschlagen:
<label>
<input type="checkbox">
<span>send newsletter</span>
</label>
Das "wrap in"-Label ermöglicht das Anklicken des Textes, ohne dass eine Verknüpfung mit dem Attribut "for-id" erforderlich ist. Allerdings,
Verstecken Sie es nicht mit visibility: hidden
o display: none
Es funktioniert durch Klicken oder Tippen, aber das ist eine lahme Art, Kontrollkästchen zu verwenden. Manche Leute verwenden immer noch viel effektivere Tab um den Fokus zu verschieben, Space zu aktivieren, und das Ausblenden mit dieser Methode deaktiviert sie. Wenn das Formular lang ist, spart man sich die Handgelenke und verwendet tabindex
o accesskey
Eigenschaften. Und wenn Sie das Verhalten der System-Kontrollkästchen beobachten, gibt es einen anständigen Schatten beim Hovern. Das gut gestylte Kontrollkästchen sollte diesem Verhalten folgen.
cobberboy's Antwort empfiehlt Font Awesome was in der Regel besser ist als Bitmap, da Schriftarten skalierbare Vektoren sind. Bei der Arbeit mit dem obigen HTML würde ich diese CSS-Regeln vorschlagen:
-
Kontrollkästchen ausblenden
input[type="checkbox"] {
position: absolute;
opacity: 0;
z-index: -1;
}
Ich verwende nur negative z-index
da in meinem Beispiel die Skin des Kontrollkästchens groß genug ist, um es vollständig abzudecken. Ich empfehle nicht left: -999px
da sie nicht in jedem Layout wiederverwendbar ist. Antwort von Bushan wagh bietet einen sicheren Weg, es zu verstecken und den Browser davon zu überzeugen, tabindex zu verwenden, und ist daher eine gute Alternative. Wie auch immer, beides ist nur ein Hack. Der richtige Weg ist heute appearance: none
siehe Joosts Antwort :
input[type="checkbox"] {
appearance: none;
-webkit-appearance: none;
-moz-appearance: none;
}
-
Beschriftung des Kontrollkästchens
input[type="checkbox"] + span {
font: 16pt sans-serif;
color: #000;
}
-
Checkbox-Skin hinzufügen
input[type="checkbox"] + span:before {
font: 16pt FontAwesome;
content: '\00f096';
display: inline-block;
width: 16pt;
padding: 2px 0 0 3px;
margin-right: 0.5em;
}
\00f096
ist Font Awesome's square-o
Die Auffüllung wird angepasst, um eine gleichmäßige gepunktete Kontur beim Scharfstellen zu erhalten (siehe unten).
-
Kontrollkästchen aktivieren Skin hinzufügen
input[type="checkbox"]:checked + span:before {
content: '\00f046';
}
\00f046
ist Font Awesome's check-square-o
die nicht die gleiche Breite hat wie square-o
Das ist der Grund für die obige Breitenangabe.
-
Fokusumriss hinzufügen
input[type="checkbox"]:focus + span:before {
outline: 1px dotted #aaa;
}
Safari bietet diese Funktion nicht (siehe Kommentar von @Jason Sankey), siehe diese Antwort für Safari-only CSS
-
Graue Farbe für deaktiviertes Kontrollkästchen festlegen
input[type="checkbox"]:disabled + span {
color: #999;
}
-
Hover-Schatten auf nicht deaktiviertes Kontrollkästchen setzen
input[type="checkbox"]:not(:disabled) + span:hover:before {
text-shadow: 0 1px 2px #77F;
}
Fahren Sie mit der Maus über die Kontrollkästchen und verwenden Sie Tab y Shift + Tab zu bewegen und Space zum Umschalten.