Ich denke, Sie versuchen, die Dinge zu komplizieren. Eine einfache Lösung besteht darin, Ihr Kontrollkästchen standardmäßig mit den nicht aktivierten Stilen zu formatieren und dann die aktivierten Statusstile hinzuzufügen.
input[type="checkbox"] {
// Unchecked Styles
}
input[type="checkbox"]:checked {
// Checked Styles
}
Ich entschuldige mich dafür, dass ich einen alten Thread angesprochen habe, hatte aber das Gefühl, dass er eine bessere Antwort hätte gebrauchen können.
EDIT (03.03.2016):
In den W3C-Spezifikationen wird dies :not(:checked)
als Beispiel für die Auswahl des nicht aktivierten Status angegeben. Dies ist jedoch explizit der deaktivierte Status und wendet diese Stile nur auf den deaktivierten Status an. Dies ist nützlich, um Stile hinzuzufügen, die nur im deaktivierten Status erforderlich sind und bei Verwendung im input[type="checkbox"]
Selektor aus dem aktivierten Status entfernt werden müssten . Zur Verdeutlichung siehe Beispiel unten.
input[type="checkbox"] {
/* Base Styles aka unchecked */
font-weight: 300; // Will be overwritten by :checked
font-size: 16px; // Base styling
}
input[type="checkbox"]:not(:checked) {
/* Explicit Unchecked Styles */
border: 1px solid #FF0000; // Only apply border to unchecked state
}
input[type="checkbox"]:checked {
/* Checked Styles */
font-weight: 900; // Use a bold font when checked
}
Ohne die Verwendung :not(:checked)
im obigen Beispiel hätte der :checked
Selektor a verwenden müssen border: none;
, um den gleichen Effekt zu erzielen.
Verwenden Sie das input[type="checkbox"]
For-Base-Styling, um Doppelarbeit zu reduzieren.
Verwenden Sie die input[type="checkbox"]:not(:checked)
Option für explizite ungeprüfte Stile, die Sie nicht auf den aktivierten Status anwenden möchten.