Sé que hay una pseudoclase CSS3 oficial :checked
, pero ¿existe una :unchecked
pseudoclase y tienen el mismo soporte de navegador?
La referencia de Sitepoint no menciona uno, sin embargo, esta especificación de whatwg (sea lo que sea) sí.
Sé que el mismo resultado se puede lograr cuando los :checked
y :not()
se combinan pseudo-clases, pero todavía estoy curioso:
input[type="checkbox"]:not(:checked) {
/* styles */
}
Editar:
El w3c recomienda la misma técnica
Se puede seleccionar una casilla de verificación sin marcar utilizando la pseudoclase de negación:
:not(:checked)
fuente
Creo que estás intentando complicar demasiado las cosas. Una solución simple es simplemente diseñar su casilla de verificación por defecto con los estilos sin marcar y luego agregar los estilos de estado marcados.
Me disculpo por mencionar un tema antiguo, pero sentí que podría haber tenido una mejor respuesta.
EDITAR (3/3/2016):
Las especificaciones del W3C lo establecen
:not(:checked)
como ejemplo para seleccionar el estado sin marcar. Sin embargo, este es explícitamente el estado sin marcar y solo aplicará esos estilos al estado sin marcar. Esto es útil para agregar un estilo que solo se necesita en el estado sin marcar y debería eliminarse del estado marcado si se usa en elinput[type="checkbox"]
selector. Consulte el ejemplo a continuación para obtener una aclaración.Sin usar
:not(:checked)
en el ejemplo anterior, el:checked
selector habría necesitado usar aborder: none;
para lograr el mismo efecto.Utilice el
input[type="checkbox"]
estilo base para reducir la duplicación.Utilice
input[type="checkbox"]:not(:checked)
para estilos explícitos sin marcar que no desee aplicar al estado marcado.fuente
:not(:checked)
:first-child
,:last-child
o:nth-child
de selección en combinación con:checked
.:not(:checked)
no cubrirá la situación que especificó a menos que no haya entendido bien su comentario.No hay una pseudoclase: sin marcar; sin embargo, si usa la pseudoclase: comprobada y el selector de hermanos, puede diferenciar entre ambos estados. Creo que todos los navegadores más recientes admiten la pseudoclase: comprobada, puede encontrar más información en este recurso: http://www.whatstyle.net/articles/18/pretty_form_controls_with_css
Obtendrá un mejor soporte del navegador con jquery ... puede usar una función de clic para detectar cuándo ocurre el clic y si está marcado o no, entonces puede agregar una clase o eliminar una clase según sea necesario ...
fuente
La forma en que manejé esto fue cambiando el className de una etiqueta en función de una condición. De esta manera, solo necesita una etiqueta y puede tener diferentes clases para diferentes estados ... ¡Espero que eso ayude!
fuente