Myślę, że próbujesz zbytnio komplikować sprawy. Prostym rozwiązaniem jest domyślne ustawienie stylu pola wyboru przy użyciu niezaznaczonych stylów, a następnie dodanie zaznaczonych stylów stanu.
input[type="checkbox"] {
// Unchecked Styles
}
input[type="checkbox"]:checked {
// Checked Styles
}
Przepraszam, że podniosłem stary wątek, ale czułem, że przydałaby się lepsza odpowiedź.
EDYCJA (03.03.2016):
Specyfikacje W3C podają, że :not(:checked)
jako przykład wyboru stanu niezaznaczonego. Jest to jednak jawnie stan niezaznaczony i zastosuje te style tylko do stanu niezaznaczonego. Jest to przydatne do dodawania stylu, który jest potrzebny tylko w stanie niezaznaczonym i musiałby zostać usunięty ze stanu zaznaczonego, jeśli zostanie użyty na input[type="checkbox"]
selektorze. Zobacz przykład poniżej dla wyjaśnienia.
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
}
Bez użycia :not(:checked)
w powyższym przykładzie :checked
selektor musiałby użyć a, border: none;
aby osiągnąć ten sam efekt .
Użyj input[type="checkbox"]
do stylizacji bazowej, aby zredukować powielanie.
Użyj input[type="checkbox"]:not(:checked)
dla jawnie niezaznaczonych stylów, których nie chcesz stosować do zaznaczonego stanu.