Autor Tema: [Tutorial] Tecnica Sprite con CSS  (Leído 3487 veces)

Desconectado OmaarV

  • PHPero Avanzado
  • ****
  • Mensajes: 304
  • Karma: 20
  • Sexo: Masculino
  • OmarVega
    • Ver Perfil
[Tutorial] Tecnica Sprite con CSS
« en: 04 de Enero de 2010, 00:54:41 am »
Los sprites es una forma de mejorar el rendimiento de nuestra pagina web hasta un 80%,
creando una solo imagen con todos los iconos asi nuestra pagina no carga tanto,
muchas de las paginas profesionales como youtube, google, yahoo o habbo utilizan sprites,
aqui un ejemplo del sprite de google.


Ahora con el ejemplo que aprenderemos es con el siguiente.


La forma mas sencilla de la que nosotros hariamos el ejemplo anterior seria:
<h3>Previsiones meteorológicas</h3>
<p id="localidad1"><img src="imagenes/sol.png" /> Localidad 1: soleado, máx: 35º, mín:
23º</p>
<p id="localidad2"><img src="imagenes/sol_nubes.png" /> Localidad 2: nublado, máx: 25º,
mín: 13º</p>
<p id="localidad3"><img src="imagenes/nubes.png" /> Localidad 3: muy nublado, máx: 22º,
mín: 10º</p>
<p id="localidad4"><img src="imagenes/tormentas.png" /> Localidad 4: tormentas, máx:
23º, mín: 11º</p>

Esta es una solucion muy sencilla y que funciona bien pero el navegador debera descargar
4 imagenes diferentes para mostrar la pagina por lo que debe realizar 4 peticiones al servidor.

Entonces lo que nosotros queremos lograr es lograr el efecto anterior sin que nuestra web carge
tantas veces utilizando la tecnica sprite.

El primer paso consiste en crear una imagen grande que incluya las cuatro imágenes
individuales. Como los iconos son cuadrados de tamaño 32px, se crea una imagen de 32px x
128px:



Para facilitar el uso de esta técnica, todas las imágenes individuales ocupan el mismo sitio dentro
de la imagen grande. De esta forma, los cálculos necesarios para desplazar la imagen de fondo se
simplifican al máximo.
El siguiente paso consiste en simplificar el código HTML:
<h3>Previsiones meteorológicas</h3>
<p id="localidad1">Localidad 1: soleado, máx: 35º, mín: 23º</p>
<p id="localidad2">Localidad 2: nublado, máx: 25º, mín: 13º</p>
<p id="localidad3">Localidad 3: muy nublado, máx: 22º, mín: 10º</p>
<p id="localidad4">Localidad 4: tormentas, máx: 23º, mín: 11º</p>

La clave de la tecnica de los sprites css consiste en mostrar las imagenes mediante la propiedad
background-image. Para mostrar cada vez una imagen diferente, se utiliza la propiedad background-position
que desplaza la imagen de fondo teniendo en cuenta la posicion de cada imagen individual dentro de la grande:

#localidad1, #localidad2, #localidad3, #localidad4 {
padding-left: 38px;
height: 32px;
line-height: 32px;
background-image: url("imagenes/sprite.png");
background-repeat: no-repeat;
}
#localidad1 {
background-position: 0 0;
}
#localidad2 {
background-position: 0 -32px;
}
#localidad3 {
background-position: 0 -64px;
}
#localidad4 {
background-position: 0 -96px;
}
La siguiente imagen muestra lo que sucede con el segundo parrafo:

El parrafo  tiene establecida una altura de 32px, identica al tamaño de los iconos.
Despues de añadir un padding-left al parrafo se añade la imagen de fondo mediante
background-image. Para cambiar de una imagen a la otra solo es necesario desplazar de forma
ascendente o descendente la imagen grande.

Si se quiere mostrar la segunda imagen se desplaza de forma ascendente la imagen grande. Para
desplazarla en ese sentido, se utilizan valores negativos en el valor indicado en la propiedad
background-position. Por ultimo como la imagen grande ha sido especialmente preparada, se sabe que el
desplazamiento necesario son 32 pixeles, por lo que la regla css de este segundo elemento resulta en:

#localidad2 {
padding-left: 38px;
height: 32px;
line-height: 32px;
background-image: url("imagenes/sprite.png");
background-repeat: no-repeat;
background-position: 0 -32px;
}

La solución original utilizaba cuatro imágenes y realizaba cuatro peticiones al servidor. La
solución basada en sprites CSS sólo realiza una conexión para descargar una sola imagen.

Los sprites que incluyen todas sus imagenes verticalmente son los mas faciles de manejar. Pero claro
tambien ahi una solucion para los que tienen sus imagenes horizontales pero claro si las pones en vertical
asi pondras poner un texto a su lado y sera una mejor imagen para su web.

Despues posteare la manera para agrear sprites de manera horizontal.

Nota: Este tutorial lo modifique yo desde un manual de css, las imagenes son las mismas utilizadas, solo
transferi el aporte y agrege mis propios aportes.

Comunidad PHPeros

[Tutorial] Tecnica Sprite con CSS
« en: 04 de Enero de 2010, 00:54:41 am »

Desconectado x.mara.x

  • PHPero Master
  • ******
  • Mensajes: 1.364
  • Karma: 57
  • Sexo: Femenino
    • Ver Perfil
Re:[Tutorial] Tecnica Sprite con CSS
« Respuesta #1 en: 04 de Enero de 2010, 11:34:55 am »
esto no se hace con scriptaculous?

Desconectado westwest

  • PHPero Master
  • ******
  • Mensajes: 2.837
  • Karma: 104
  • Sexo: Masculino
    • Ver Perfil
Re:[Tutorial] Tecnica Sprite con CSS
« Respuesta #2 en: 04 de Enero de 2010, 11:46:13 am »
Scriptaculous???? xD no todo se hace con scriptaculous

Es un buen tutorial ;), pero pon la fuente  original :P

Desconectado OmaarV

  • PHPero Avanzado
  • ****
  • Mensajes: 304
  • Karma: 20
  • Sexo: Masculino
  • OmarVega
    • Ver Perfil
Re:[Tutorial] Tecnica Sprite con CSS
« Respuesta #3 en: 04 de Enero de 2010, 22:26:07 pm »
esto no se hace con scriptaculous?

Noo, se hace con css

la fuente original es un Manual de Css Avanzado que descarge pero no tiene autor por eso especifique que no lo hice yo
« Última modificación: 05 de Enero de 2010, 02:13:52 am por OmaarV »

Desconectado NDSi

  • PHPero Avanzado
  • ****
  • Mensajes: 410
  • Karma: 8
  • Sexo: Masculino
    • Ver Perfil
Re:[Tutorial] Tecnica Sprite con CSS
« Respuesta #4 en: 05 de Enero de 2010, 02:11:07 am »
Muy buen aporte me sirvio mucho ;D

Desconectado x.mara.x

  • PHPero Master
  • ******
  • Mensajes: 1.364
  • Karma: 57
  • Sexo: Femenino
    • Ver Perfil
Re:[Tutorial] Tecnica Sprite con CSS
« Respuesta #5 en: 06 de Enero de 2010, 13:01:54 pm »

Noo, se hace con css

la fuente original es un Manual de Css Avanzado que descarge pero no tiene autor por eso especifique que no lo hice yo
-.- .. si se que esto es css.... .... ... ... ... pero habia escuchado por ahi que se puede hacer con scriptaculous xD (tope)

Desconectado OmaarV

  • PHPero Avanzado
  • ****
  • Mensajes: 304
  • Karma: 20
  • Sexo: Masculino
  • OmarVega
    • Ver Perfil
Re:[Tutorial] Tecnica Sprite con CSS
« Respuesta #6 en: 06 de Enero de 2010, 21:29:03 pm »
-.- .. si se que esto es css.... .... ... ... ... pero habia escuchado por ahi que se puede hacer con scriptaculous xD (tope)

disculpa entendi mal xD

Desconectado HostingUnEuro

  • PHPerit@
  • *
  • Mensajes: 31
  • Karma: 0
  • Nuev@ PHPer@
    • Ver Perfil
Re:[Tutorial] Tecnica Sprite con CSS
« Respuesta #7 en: 13 de Marzo de 2011, 20:38:49 pm »

Tema bastante interesante. Sin duda es algo muy necesario ;) ¡Enhorabuena al que haya elaborado este tutorial!

Desconectado Rastrillox

  • PHPero Experto
  • *****
  • Mensajes: 592
  • Karma: 25
  • Sexo: Masculino
    • Ver Perfil
    • Forhabbo.es
Re:[Tutorial] Tecnica Sprite con CSS
« Respuesta #8 en: 13 de Marzo de 2011, 21:49:49 pm »
Llevo un tiempo en el css.. y ahora que nomas he visto este post y le eh echado un re ojos.. ya se como se hace Te llevas mi Karmaso(+)

Desconectado j0n4th4ntub3

  • PHPerit@
  • *
  • Mensajes: 18
  • Karma: 2
  • Nuev@ PHPer@
    • Ver Perfil
Re:[Tutorial] Tecnica Sprite con CSS
« Respuesta #9 en: 16 de Marzo de 2011, 08:57:57 am »
siempre quize saber si existia algun programa que creara un sprite con varios iconos :P busque alguno por google pero no era comodo, alguno sabe de algun programa o extension de photoshop?

excelente aporte!! +1

Desconectado OmaarV

  • PHPero Avanzado
  • ****
  • Mensajes: 304
  • Karma: 20
  • Sexo: Masculino
  • OmarVega
    • Ver Perfil
Re:[Tutorial] Tecnica Sprite con CSS
« Respuesta #10 en: 18 de Marzo de 2011, 05:40:17 am »
Puedes darte la vuelta por http://csssprites.com/

Desconectado -Pituko-

  • PHPero Experto
  • *****
  • Mensajes: 954
  • Karma: 20
  • Sexo: Masculino
  • ¡Hala Madrid!
    • Ver Perfil
Re:[Tutorial] Tecnica Sprite con CSS
« Respuesta #11 en: 10 de Abril de 2011, 02:52:15 am »
Yo hice una "layout" simple con una imagen como base (nada mas la imagen) y en css top, left y position: absolute; y me funciono perfecto y carga igual de rápido que un sprite, ¿Eso se considera un sprite también?
Así me quedo:
« Última modificación: 10 de Abril de 2011, 02:54:40 am por -Pituko- »