Creo que usted está tratando de complicar más las cosas. Una solución simple es simplemente diseñar su casilla de verificación de forma predeterminada con los estilos sin marcar y luego agregar los estilos de estado marcados.
input[type="checkbox"] {
// Unchecked Styles
}
input[type="checkbox"]:checked {
// Checked Styles
}
Pido disculpas por mencionar un hilo antiguo pero sentí que podría haber usado una mejor respuesta.
EDIT (03/03/2016):
estado W3C especificaciones que :not(:checked)
como su ejemplo para seleccionar el estado sin marcar.Sin embargo, esto es explícitamente el estado no verificado y solo aplicará esos estilos al estado no verificado. Esto es útil para agregar estilo que solo se necesita en el estado no verificado y que sería necesario eliminar del estado verificado si se usa en el selector input[type="checkbox"]
. Vea el ejemplo a continuación para aclaración.
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
}
Sin utilizar :not(:checked)
en el ejemplo anterior el selector :checked
habría tenido que utilizar un border: none;
para lograr el mismo efecto.
Utilice el input[type="checkbox"]
para el estilo de base para reducir la duplicación.
Utilice el input[type="checkbox"]:not(:checked)
para los estilos explícitos no comprobados que no desea aplicar al estado comprobado.
Solo para agregar a esta respuesta que seleccionar: no (: marcado) funciona perfectamente en Chrome, pero no en IE (probado en 9 y 11). –
@Bruno Finger:: checked y: not (: checked) deberían funcionar en IE, excepto que ambos se ven igualmente afectados por un error donde al cambiar el estado verificado no se actualizan los estilos de los elementos en relación con el check/elemento sin marcar. – BoltClock