lebyrus

Rollover de imágenes con CSS sin precarga

La semana pasada terminé mi primer rollover de imágenes con CSS. Hasta esta misma mañana, estaba muy orgulloso de él. A fin de cuentas, después de tanto tiempo abusando de JavaScript para ese tipo de efectos, es un adelanto enorme prescindir de él.

Pero trabajar en local tiene un gran problema, y es que las imágenes cargan con gran velocidad, de tal manera que olvidamos los tiempos de carga, y resulta que el método que había usado para sustituir una imagen por otra no precargaba las imágenes de los efectos hover, con lo que se produce un feo efecto de fondo blanco hasta que se carga la imagen.

Comienza entonces mi proceso habitual de aprendizaje. Desde Google llego a un ejemplo de rollover de imágenes con CSS que no requiere precarga, donde explica una técnica muy sencilla para evitar el efecto que os he comentado.

La propiedad clave es background-position, propiedad que, simplemente, nos permite hacer un desplazamiento a la imagen de fondo. Con ello, en lugar de crear una imagen para cada estado, podemos crear una sola que aglutine los estados que necesitemos, en mi caso dos: normal y hover.

Explicación del rollover

Como nuestro gráfico tiene 100px de alto, definiremos la altura a la mitad, para que sólo muestre la parte Normal.

a#rollover{
display: block;
width: 50px;
height: 50px;
background:
transparent url(/img/rollover.gif) no-repeat;
}a#rollover span{ display:none;}

Actualización (30/04/2004): Usamos esta última regla para ocultar el texto del enlace, algo que debería revisar tras leer las técnicas que os comento en este otro post. Fin actualización (30/04/2004)

Y luego definimos el comportamiento para hover de la siguiente manera, para que sitúe la imagen desde la base, con lo que se verá solamente la parte Hover:

a#rollover:hover{
background-position: bottom;
}

Y el resultado es éste: Jei/Jou

1 comentario

28/04/2004

Comentarios

#1 - Johnny

Muy útil el artículo, te felicito por él, y también por el blog, tiene buena pinta así que lo añadiré a mis marcadores…
saludos ;D

Proyectos

  • Logotipo de Cordobapedia
  • nuno21 - Foro en español de Nuno Bettencourt
  • Microflog

Last.fm

 

sergiogomez's Last.fm Weekly Artists Chart

-->

Discos

  • Rockabye Baby! Lullaby Renditions of Metallica
  • Portada de Pearl Jam - Pearl Jam (2006)
  • Hay mucho Rock'n Roll - Platero y Tú
  • Portada de Auf der Maur - Auf der Maur (2004)
  • Portada de Dramagods - Love (2005)

Mi blog soporta myComments

La culpa de todo no fue sólo mía...