Tengo una lista de casillas de verificación en una tabla. (uno de varios CB en la fila)
<tr><td><input type="checkbox" class="custom_image" value="1" id="CB1" /><label for='CB1'> </label></td></tr>
<tr><td><input type="checkbox" class="custom_image" value="2" id="CB2" /><label for='CB2'> </label></td></tr>
<tr><td><input type="checkbox" class="custom_image" value="3" id="CB3" /><label for='CB3'> </label></td></tr>
<tr><td><input type="checkbox" class="custom_image" value="4" id="CB4" /><label for='CB4'> </label></td></tr>
Me gustaría reemplazar la imagen de la casilla de verificación con un par de imágenes personalizadas de encendido / apagado y me preguntaba si alguien tenía una mejor comprensión de cómo hacer esto con CSS.
Encontré este tutorial de "CSS ninja", pero debo admitir que lo encuentro un poco complejo para mí. http://www.thecssninja.com/css/custom-inputs-using-css
Por lo que puedo decir, puedes usar una pseudoclase
td:not(#foo) > input[type=checkbox] + label
{
background: url('/images/off.png') 0 0px no-repeat;
height: 16px;
padding: 0 0 0 0px;
}
Mi expectativa era que al agregar el CSS anterior, la casilla de verificación al menos por defecto mostraría la imagen en el estado APAGADO y luego agregaría lo siguiente para activar el
td:not(#foo) > input[type=checkbox]:checked + label {
background: url('/images/on.png') 0 0px no-repeat;
}
Desafortunadamente, parece que me estoy perdiendo un paso crítico en alguna parte. Intenté usar la sintaxis del selector CSS3 personalizado para que coincida con mi configuración actual, pero debe faltar algo (las imágenes tienen un tamaño de 16x16 si eso importa)
http://www.w3.org/TR/css3-selectors/#checked
EDITAR: Me faltaba algo en el tutorial donde aplica el cambio de imagen a la etiqueta y no a la entrada en sí. Todavía no obtengo la imagen intercambiada esperada para el resultado de la casilla de verificación en la página, pero creo que estoy más cerca.
fuente
Respuestas:
Ya estás cerca. Solo asegúrate de ocultar la casilla de verificación y asociarla con una etiqueta que diseñes a través de
input[checkbox] + label
Código completo: http://gist.github.com/592332
JSFiddle: http://jsfiddle.net/4huzr/
fuente
label
elemento que puede faltar. mira mi respuesta a continuación.El uso de javascript parece ser innecesario si elige CSS3.
Al usar el
:before
selector, puede hacer esto en dos líneas de CSS. (sin guión involucrado).Otra ventaja de este enfoque es que no depende de la
<label>
etiqueta y funciona incluso si falta.Nota: en los navegadores sin compatibilidad con CSS3, las casillas de verificación se verán normales. (compatible con versiones anteriores).
input[type=checkbox]:before { content:""; display:inline-block; width:12px; height:12px; background:red; } input[type=checkbox]:checked:before { background:green; }
Puede ver una demostración aquí: http://jsfiddle.net/hqZt6/1/
y este con imágenes:
http://jsfiddle.net/hqZt6/6/
fuente
visibility: hidden
y:before
avisibility: visible
. Sin embargo, supongo que esto rompe la compatibilidad con versiones anteriores.Si todavía está buscando más personalización,
Consulte la siguiente biblioteca: https://lokesh-coder.github.io/pretty-checkbox/
Gracias
fuente