myślę, że starają się nad komplikować. Prostym rozwiązaniem jest domyślne zaznaczenie pola wyboru przy użyciu niezaznaczonych stylów, a następnie dodanie sprawdzonych stylów stanu.
input[type="checkbox"] {
// Unchecked Styles
}
input[type="checkbox"]:checked {
// Checked Styles
}
Przepraszam, że wychowałem stary wątek, ale czułem, że mógłbym użyć lepszej odpowiedzi.
EDIT (03.03.2016):
stan W3C Specs że :not(:checked)
jako ich przykład wybierając stan niezaznaczone.Jest to jednak wyraźnie niezaznaczony stan i zastosuje tylko te style do niezaznaczonego stanu. Jest to przydatne do dodawania stylów, które są potrzebne tylko w niezaznaczonym stanie i wymagałyby usunięcia ze stanu zaznaczonego, jeśli są używane w selektorze input[type="checkbox"]
. Zobacz przykład poniżej w celu 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 przykładzie powyżej selektora :checked
musiałby użyć border: none;
w celu osiągnięcia tego samego efektu.
Użyj stylu input[type="checkbox"]
do stylizacji bazy, aby zmniejszyć duplikację.
Skorzystaj z input[type="checkbox"]:not(:checked)
dla jawnych niezaznaczonych stylów, których nie chcesz zastosować do zaznaczonego stanu.
Wystarczy, że dodasz do tej odpowiedzi, że wybranie: not (: checked) działa idealnie w Chrome, ale nie działa na IE (testowane na 9 i 11). –
@Bruno Finger:: zaznaczone i: nie (: zaznaczone) powinny pracować na IE, z wyjątkiem sytuacji, gdy oba mają taki sam wpływ na błąd, w którym zmiana statusu sprawdzanego nie aktualizuje stylów elementów docelowych w stosunku do sprawdzanego/niezaznaczony element. – BoltClock