Como Crear un Formulario Elegante con CSS e Imágenes
¿Ya te aburriste de ver los mismos formularios sin gracia?
Pues ahora puedes personalizarlos de formas sencillas, solo con un poco de conocimiento de CSS. Hay varias maneras de personalizar un formulario, esta vez les enseñaré 2 maneras, con resultados similares. Pero antes de comenzar a personalizar, debemos tener el boceto de lo que será nuestro formulario.
Luego de ya saber cómo será la estructura, empezamos a hacer el html de nuestro formulario.
<form method="post" action=""> <fieldset> <h1>Registro</h1> <p>Registrate ahora! es gratis</p> <label for="nombre" class="nombre"> Nombre <span>Agrega tu nombre</span> </label> <input type="text" name="nombre" id="nombre" /> <label for="email" class="email"> E-mail <span>Agrega un correo valido</span> </label> <input type="text" name="email" id="email"/> <label for="pass" class="pass"> Password <span>5 caracteres como minimo</span> </label> <input type="password" name="pass" id="pass"/> <input type="submit" id="registrar" value="Registrarme"/> </fieldset> </form>
Una vez que tenemos listo nuestro formulario, es hora de personalizarlo.
1) Usando solo CSS
fieldset{ margin:auto; width:475px; overflow:hidden; padding:30px; } h1{ margin:10px 0 0 0; font-size:4.5em; } p{ margin:0 0 30px 0; padding:0 0 5px 0; font-size:10px; border-bottom:1px solid #cfe0e9; } label{ float:left; /* Importante, para la alineación */ width:200px; /* ancho del label */ font-size:2.8em; margin:5px 0 15px; } input{ float:left;/* Importante, para la alineación */ width:245px; height:36px;/* Medidas del Input */ margin:0 0 15px 0; padding:15px; color:#ccc;font-size:2em; } span{ font-size:10px;/* Tamaño más pequeño para las indicaciones */ display:block; /* hace que salte de linea */ } /* Personzaliando el botón de registrar */ #registrar{ float:left; padding:0; margin:15px 0 0 140px; background:#d0e8f7; color:#418eb6; width:185px;height:45px; } /* Hover a nuestro Botón No funciona en IE6 (Uno de los peores navegadores) */ #registrar:hover{ background:#418eb6; color:#d0e8f7; } /* Opcional - Bordes Redondeados Solo funciona con Firefox / Safari / Google Chrome */ input,#registrar{ -moz-border-radius:10px; -webkit-border-radius:10px; } /* Si usan esto ultimo no validara, porque aun no lo han estanderizado pero funciona a la perfección - salvo con IE (la oveja negra) */
Es una forma fácil de personalizar, solo aprovechando lo que nos brinda CSS. Esta forma funciona perfectamente con IE6, IE7, Safari, Firefox y Google Chrome.
Demo - Personalizar el formulario usando solo CSS
2) Usando Imágenes / CSS
Ahora veremos como personalizar usando imágenes y CSS. Para este caso lo que hice fue tratar de tener la menor cantidad de imágenes.
Comenzamos con todos los textos, para eso debes juntar todos los textos creados en algun editor de imágenes (aplicando los efectos que desees) a una sola imágen. Después de eso, jugamos un poco con CSS
.
Lo que vamos a hacer va a ser algo parecido a lo que ya expiqué en otro tutorial, solo que esta vez jugaremos con las alturas.
Lo más importante en esto es saber usar "background-position".
h1,p,label,span{ background:url(images/txt-form.png) no-repeat;/* Imagen con todos los textos para h1,p,label,span */ text-indent:-9999em;/* Hace desaparecer por arte de magia los textos xD! y solo quedaran las imagenes */ } h1{ margin:10px 0 3px 0; background-position:0 0; /* Posición inicial de la imágen */ width:200px; height:45px;/* Medidas de nuestro título */ } p{ margin:0 0 50px 0; /* La posición disminuye según la altura donde se ubique la parte que quieres mostrar */ background-position:0 -50px; width:143px;height:9px; } label{ float:left;/* Importante para la alineación */ width:200px;/* ancho que heredaran todos los label */ font-size:2em; margin:12px 0 15px 0; } span{ display:block; /* hace que salte de linea */ } .nombre{ /* Como esta parte comenzaba en Y = 59, le quitamos -59px a la posición */ background-position:0 -59px; height:23px; /*Importante poner la altura que queremos mostrar */ } .nombre span{ background-position:0 -94px; height:10px; } .email{ background-position:0 -104px; height:23px; } .email span{ background-position:0 -138px; height:10px; } .pass{ background-position:0 -148px; height:23px; } .pass span{ background-position:0 -182px; height:8px; }
Ahora personalizamos los elementos que faltan que ya son más fáciles de entender
input{ float:left; background:url(images/input.png) no-repeat; /* imagen con esquinas redondeadas para todos los input */ width:245px; height:36px; margin:0 0 25px 0; padding:15px; color:#ccc; font-size:2em; } #registrar{ float:left; margin:15px 0 0 140px;padding:0; background:url(images/registrar.png) 0 -45px;/* Otra vez usando las posiciones */ width:185px;height:45px;/* importante definir la altura*/ color:#418eb6; } /* Hover a nuestro Boton No funciona en IE6(para variar..) */ #registrar:hover{ background-position:0 0; color:#d0e8f7; }
Y así hemos personalizado nuestro formulario usando imágenes y CSS (sobre todo usando background-position).
Esta manera funciona bien en IE7, IE8, Firefox, Safari y Google Chrome. (No se ve bien en IE6)
Demo - Personalizar formulario con imágenes / CSS
Ahora que ya saben usar las 2 maneras, pueden mejorarlo para que funcione para todos los navegadores (incluyendo el maldito IE6) combinando las 2 formas (Usar imágenes solo en las esquinas redondeadas y lo demás puro CSS).

Eres increible, de verdad, no se como darte las gracias amigo. El tutorial está muy muy claro, ahora ya entiendo como hacer formularios con imagenes de photoshop.
Llevo sin exagerarte 2 meses buscando info por internet para aprender a maquetar una web usando imagenes desde photoshop y sin duda tu web es la mejor de todas.
La tengo el el primer sitio de mis "favoritos".
Muuuuuuuuuuuuchas gracias WillxD.
PD: Espero que con tu permiso pueda seguir "abusando" de ti para hacerte saber mis dudas y que me las puedas resolver a modo de post y tutoriales.
Gracias por todooo xD
como no hiciste este tutorial hace como 5 meses, X(, vieras como he batallado con eso de la validada, que me imagino es el tipo formulario que al enviar la info, te diga gracias, todo esta bien o algo asi, porque uno que hice, me manda a una página, en lugar de mostrar solo un popup de Gracias, voy a ver como uso éste pero en un formulario de recepción en hotel, muchas gracias WillxD, eres la pura onda mi chavo, saludos!!
la verdad muy bueno, justo
lo que buscaba
Muy bueno! Es el mejor que vi!
Aprovecho para preguntarte si sabés como darle estilo con imágen a un pulldown, o sea al botoncito que tiene la flechita hacia abajo para desplegar el menú.
No entiendo muy bien a lo que te refieres, si me das un ejemplo, me quedaría más claro
y te ayudaría.
Salu2!
probe el formulario en distintos navegadores, en IE6 y IE7 cuando las palabras son mas largas que el campo imput, la imagen de fondo se desplaza.
Enhorabuena, sencillo, claro y eficaz.
gracias.