Sprites CSS, Qué son y para qué sirven.

En la mayoría de páginas web normales, la mayor parte del tiempo se dedica a la descarga de las imágenes. Por tanto, aunque los mayores esfuerzos siempre se centran en reducir el tiempo de generación dinámica de las páginas, se conseguiría más y con menos esfuerzo si se mejora la descarga de las imágenes.

La idea para mejorar el rendimiento de una página que descarga por ejemplo 15 imágenes consiste en crear una única imagen grande que incluya las 15 imágenes individuales y utilizar las propiedades CSS de las imágenes de fondo para mostrar cada imagen. Esta técnica se presentó en el artículo CSS Sprites: Image Slicing’s Kiss of Death y desde entonces se conoce con el nombre de sprites CSS.

Esta misma metodología la implementan yahoo, google,  youtube y muchos otros.  El ejemplo que sigue ilustra la implementación de Sprites.

La carga de 100 imágenes, tardo aproximadamente 4,53 segundos. VER

Por otro lado, la carga de 1 sola imagen y reubicando las imágenes tardó sólo 0,95 segundos. VER

Ejemplo Práctico:

Para entenderlo mejor he creado un ejemplo. Desde el sitio CSS Sprites Generator podemos cargar imágenes o iconos y automáticamente se crea una sola imagen, dándonos las posiciones (background) de los mismos, esta Web es muy útil y nos ayuda un montón:

714b3dceb17261cdbd4aaff57a4e627e

y su respectivo background que nos entrega la misma Web :

background-position: -9px -9px;
background-position: -9px -45px;
background-position: -9px -81px;
background-position: -9px -117px;
background-position: -9px -153px;
background-position: -9px -189px;

Ahora la tarea mas tediosa ya no esta más, solo nos falta Armar el css.

.admi{ background:url(sprite.png) -9px -9px no-repeat; padding-left: 18px;}
.add{ background:url(sprite.png) -9px -45px no-repeat; padding-left: 18px;}
.appl{ background:url(sprite.png) -9px -81px no-repeat; padding-left: 18px;}
.abaj{ background:url(sprite.png) -9px -117px no-repeat; padding-left: 18px;}
.izqu{ background:url(sprite.png) -9px -153px no-repeat; padding-left: 18px;}
.diag{ background:url(sprite.png) -9px -189px no-repeat; padding-left: 18px;}

y el HTML:

<a class="admi" href="#">Signo</a>
| <a class="add" href="#">Agregar</a>
| <a class="appl" href="#">Apple</a>
| <a class="abaj" href="#">Abajo</a>
| <a class="izqu" href="#">Izquierda</a>
| <a class="diag" href="#">Diagonal</a>

Ver el Ejemplo funcionando. Link

Descargar ejemplo Link

Link de Interés

Saludos promero.


¿Disfrutaste esta entrada? Por qué no dejas un comentario abajo y continúas la conversación, o te suscríbes a mi feed y obtienes los artículos como este enviados automáticamente cada día hacia tu lector de feeds.

Trackbacks & Pingbacks

No hay trackbacks/pingbacks todavía.

Comentarios

podrias ahorrar mas codigo si declaras que dicha etiqueta que este dentro de un contenedor X… tenga el mismo fondo y padding… y ya luego… variar el background-position y ya… para no repetir los mismos valores una y otra vez…

Hola Alex:
Tenes razón lo que decís, la cosa es que está planteado de esta forma para que quede más claro el ejemplo

Saludos y gracias por colaborar
promero

Deja un comentario

Saltos de línea automáticos, la dirección de email nunca será publicada, HTML permitido: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

(requerido)

(requerido)