Insertar imagen en un campo de texto con CSS

Insertar imagen en un campo de texto con CSS

ejemplo-imagen-formulario

Un usuario me preguntó como podía insertar una imagen en un campo de texto. Bien, es muy sencillo, y en esta entrada se explicará paso a paso.

Código HTML

Como vemos es un formulario (form) formado por 3 input de tipo texto con sus respectivas clases.

<form action="myaction.php" method="post" id="myid">

<p><input type="text" name="author" class="author" value="Autor" size="22" tabindex="1" /></p>

<p><input type="text" name="email" class="mail"  value="Email>" size="22" tabindex="2" /></p>

<p><input type="text" name="url" class="website" value="Url" size="22" tabindex="3" /></p>

</form>

Código CSS

El código CSS se divide en dos partes. Una es la parte cuando no estamos presionando el formulario, y otra cuando clickamos en el formulario (hover -aunque esta parte es más secundaria y no hace falta a menos que queramos dar más estética al formulario-).

Si no estamos presionando el formulario, el código CSS es este (solo nos fijaremos en la clase “author”:

#commentform input.author{

background-position: left center;

padding-left: 17px;

width:183px;

background-image: url(images/user.gif);

background-repeat: no-repeat;

}

Si nos fijamos vemos una imagen de fondo (el icono del formulario que aparece al principio) orientado hacia la izquierda (background-position) con un padding a la izquierda de 17 px. Este padding es necesario especificarlo ya que si no, el texto se “montará” encima del fondo (icono). El padding debe ser 1 o 2 píxeles superior al ancho total del icono que vayamos a añadir. Finalmente indicamos el ancho de todo el formulario, que en este caso es de 183 píxeles.

El código CSS cuando hemos presionado el formulario es este:

#commentform input.author[type="text"]:focus {

background-color: #FFF;

background-position: left center;

padding-left: 17px;

width:183px;

background-image: url(images/user2.gif);

background-repeat: no-repeat;

}

Aplicando focus al formulario podemos asignarle un nuevo fondo a la caja de texto, con un nuevo icono (como es este caso, ya que puede haber muchas variantes) y con esto ya tendríamos nuestro formulario más estilizado y acabado.

Este hack tiene XHTML 1.0 Transitional válido y funciona tanto en Safari 3+. 4+, como en Firefox 3.x e Internet Explorer.

Autor de CSSBlog ES
  • Ya lo he hecho pero la imagen me aparece en todo el input es una imagen de 16x16 como le hago para que salga solo una vez y el texto despues de la imagen?
  • No funciona en IE7 :S
  • Lord
    Buen ejemplo!! Sin embargo y para optimizar el rendimiento, yo lo haría con un sprite (uniendo las dos imágenes en una). Así sólo tenemos que variar la posición de la imagen en vez de cargar una nueva ;)
  • Pedro CM
    @Free los ejemplos están probados y sí funcionan, algo has hecho mal. Pregúntalo en el foro: http://comunidad.cssblog.es/
  • Free
    No me funciona :(:(:(
  • Pedro CM
    @no sale, en el tutorial solo está explicado el primer icono, los demás se hacen exactamente igual pero cambiando la clase y la imagen de fondo. Los bordes curvos se realizan con la propiedad border-radius de CSS3: http://www.cssblog.es/diferencia-entre-bordes-r... (Observa como se hace con CSS3, es el que te interesa).

    Un saludo.
  • no sale
    a mi no me sale, solo me ha salido el icono del primer campo , tampoco salen las esquinas redondas. ese tutorial está mal
    a no ser que alguien me lo explique
  • Ricard
    Yasie!, el problema no es IE8 el problema es que debes de dar al formulario el id="commentform" en lugar del que pone id="myid"
  • yasiel
    buenas, el caso es que no consigo que el focus funcione con internet explorer (la version 8), a ver si alguien me ayuda, porque ya no se que probar, saludoss
  • CSSBlog
    @Jhonny puedes verlo por el código fuente, nosotros no podemos ofrecerte eso.

    Un saludo.
  • Jhonny
    Hola quisiera que me proporcionen por favor en codigo completo con las imagenes como en este ejemplo de dejar un comentario.

    Gracias.!!
  • Hoooooooooooorale muchas gracias por contestar hehe justamente estoy en un desarrollo de una pagina web para aqui donde trabajo donde los formularios son lo que mas se mirara y pues nada como ponerle un buen estilo sale muchas gracias por la explicacion ^_^
  • CSSBlog
    @Cheap aplicando la propiedad border-radius:http://www.cssblog.es/diferencia-entre-bordes-redondeados-con-css2-y-css3/ (Observa como se hace con CSS3, es el que te interesa).
  • Wao! Simplemente exelente y muy simple...

    tambien me preguntaba como se hacia
  • Cheap
    Gracias!! siempre me lo había preguntado también. Tu formulario de mensajes es muy original yhe notado que ahora última hay esta tendencia de meterle el ícono al input.

    Si no te molesta, podrías por favor también explicar cómo aplicas el CSS al input-text, para que quede con bordes curvos? Gracias!!
  • Muchas gracias me encanta, me sera muy util y es facil de hacer.
  • Oscar Contreras
    jajaja, fantastico, no sabia que eso se hiciera tan facil..
    muchas gracias.
blog comments powered by Disqus

Sigue este blog por:

Patrocinadores

  • Últimos comentarios

    Patrocinadores


    Get Adobe Flash playerPlugin by wpburn.com wordpress themes