Otro blog más de diseño
Una de mis mayores obsesiones en la web son los campos de formulario. Son los elementos menos personalizables del html, ya que siempre nos obligan a utilizar javascript bien para reemplazar ese elemento o para implementar una funcionalidad que se pierde al utilizar css en un desplegable o en un campo de tipo file.
Los navegadores modernos (olvidaros de explorer) y las css avanzadas, nos permiten modificar – en este caso – y sin utilizar javascript, los input de tipo “checkbox” y “radio” con la ayuda de las etiquetas “label”, pudiendo personalizarlos hasta límites inimaginables. Como siempre, el límite lo pone nuestra creatividad.
Esto lo conseguimos con esta estructura
<input type="checkbox" name="check_01" id="check_01" /> <label for="check_01">Opción</label>
Con una imagen similar a esta
![]()
Y estas pequeñas líneas de css
input[type=checkbox] {display: none;}
input[type=checkbox] + label {
background: #fff;
display: inline-block;
width: 16px;
height: 16px;
background: url(img/check_02.png) 0px 0px no-repeat;
text-indent: -1000em;
}
input[type=checkbox]:checked + label {
background: url(img/check_02.png) 0px -16px no-repeat;
}
Las cuales tienen una explicación muy sencilla.
input[type=checkbox] nos permite seleccionar todos los campos “input” de tipo “checkbox“.
input[type=checkbox] + label nos permite seleccionar todos los campos “input” de tipo “checkbox” y además, el elemento “label” que se encuentre a continuación. No debe haber ningún otro elemento depués del campo “input“.
input[type=checkbox]:checked + label, nos permite seleccionar todos los campos “input” de tipo “checkbox” cuyo atributo “checked” sea igual a “checked” y además, el elemento “label” que se encuentre a continuación.
De esta manera, podemos hacer cosas similares a las que he montado en un ejemplo.
[ ejemplo ] [ descargar ejemplo ]
Qué puedo decir de mi que no se haya dicho ya antes.
Xaviju
marzo 17th, 2011 el 1:31 pm
Está muy bien, pero no funciona en versiones anteriores de CSS, como la 7.
¿Alguna idea?
cmacias
marzo 17th, 2011 el 7:06 pm
Hola Xaviju, para el resto de navegadores que no soportan estos CSS, tienes una alternativa en el javascript.
Te paso – por si te interesa – un par de enlaces de librerías que te permiten realizar esto mismo en js.
- http://lipidity.com/fancy-form/
- http://www.no-margin-for-errors.com/projects/prettycheckboxes/documentation/
Un saludo,
Carlos.
marlene
agosto 23rd, 2011 el 9:50 am
muy buen ejemplo! ojalá fuera tan facil para los combos…
cmacias
agosto 23rd, 2011 el 1:08 pm
Hola Marlene. Cierto. Ojalá para los combos fuera tan sencillo.
De todas formas si te sirve, tienes este ejemplo http://www.cmacias.com/cambiando-el-aspecto-de-los-selectbox/ que pienso también es sencillo aunque tenga que usar algo de js