¿Qué es un duende? Sprites. ¿Por qué combinar estas imágenes? ¿No es más rápido cargar los pequeños?

Antes de que CSS introdujera la pseudoclase :hover, la creación de un rollover (un elemento que cambia de apariencia cuando se coloca el cursor sobre él) se implementaba a través de JavaScript. Hoy en día esto se hace mucho más fácil, pero hay un inconveniente: si alguna imagen de fondo aparece en el estado: hover (es decir, cuando se pasa el cursor sobre un elemento), entonces comienza a cargarse en el momento en que se pasa el cursor, y no cuando la página generalmente está cargada.

Debido a esto, puede haber un ligero retraso cuando la imagen aparece por primera vez. Y aunque este retraso ya no ocurre con todos los desplazamientos posteriores del cursor, muchos desarrolladores han pensado en cómo solucionar este problema. Por ejemplo, puede utilizar JavaScript para asegurarse de que todas las imágenes de fondo se carguen de antemano. Pero hay una forma que no requiere conocimientos de ningún lenguaje de programación, y es mediante el uso de sprites.

¿Qué son los sprites CSS?

Un objeto CSS es un archivo gráfico único que contiene muchas imágenes diferentes. Puede contener, por ejemplo, todos los elementos de la interfaz gráfica, como iconos, botones, etc. Además, los sprites a menudo combinan imágenes de fondo junto con sus variaciones para el estado de desplazamiento. Ejemplos típicos de sprites:

Sprite, que contiene todos los íconos utilizados Sprite con íconos de redes sociales y sus variaciones para: pasar el mouse

Beneficios de los sprites CSS
  • El objeto CSS contiene imágenes de fondo para los distintos estados de los elementos y se carga en su totalidad cuando se carga la página web. Esto evita que el desplazamiento se ralentice cuando pasa el cursor sobre el elemento por primera vez.
  • Se reduce el número de llamadas al servidor. Después de todo, cargar cada ícono pequeño requiere una solicitud por separado y cuantas menos solicitudes, mejor. Para cargar un sprite, solo necesitas una solicitud al servidor.
  • Otra ventaja de almacenar muchas imágenes en un objeto es que si tienen una paleta de colores similar, entonces una imagen grande pesará menos que las imágenes pequeñas individuales combinadas.
  • Todo esto generalmente tiene un efecto positivo en la velocidad de carga del sitio.
Cómo crear un sprite a partir de imágenes

En el caso clásico, los sprites se crean en un editor de imágenes. Las imágenes pequeñas se colocan secuencialmente en un lienzo grande (a menudo con un fondo transparente), que luego se guarda como un archivo gráfico.

El método manual de creación de sprites es una tarea que requiere bastante tiempo. Por lo tanto, cuando el uso de sprites comenzó a cobrar impulso, aparecieron servicios en línea para la creación automática de hojas de sprites, por ejemplo, Spritegen, Generador de RetinaSprite y otros. Usted carga las imágenes necesarias en archivos separados en el sitio y se genera un objeto para usted, que puede descargar inmediatamente a su computadora.

Cómo usar sprites CSS

Ahora es el momento de aprender a utilizar los sprites CSS en la práctica. Le mostraremos un pequeño ejemplo usando un objeto que contiene íconos de redes sociales (lo mostramos arriba). En el estado normal del enlace, el ícono de la red social será de color (fila superior del sprite), y al pasar el cursor se volverá gris (como en la fila inferior).

El marcado HTML se ve así:

Creamos nuestra propia clase para enlazar a cada red social. Dado que este es un ejemplo de prueba, no perdemos el tiempo completando los atributos href; en lugar de enlaces a sitios reales, colocamos marcadores de posición. Dentro de la etiqueta no colocamos nada, porque la apariencia de los enlaces vendrá determinada por sus imágenes de fondo con iconos de redes sociales.

Pasemos a CSS. En primer lugar, anotemos los estilos generales para todos los enlaces:

A (imagen de fondo: url(https://goo.gl/1t18Rz); repetición de fondo: sin repetición; altura: 98 px; ancho: 100 px; pantalla: bloque en línea; margen derecho: 10 px;)

Las siguientes dos líneas son la altura y el ancho de cada elemento. . ¿Cómo se determinaron estos valores? Aquí comenzamos desde el tamaño de los íconos en el sprite. La altura de cada icono es de 98 píxeles y el ancho es de 100 píxeles. A continuación, colocaremos la imagen de fondo para cada enlace, ajustando el fondo para que el icono encaje exactamente en la “ventana” de 98x100 píxeles del enlace.

A.facebook (posición de fondo: arriba a la izquierda;)

Vayamos más allá: coloque el fondo del enlace de Twitter. El icono de Twitter está situado a la derecha de Facebook y lo flanquea sin crear espacios vacíos. Necesitamos mover el objeto hacia la izquierda suficientes píxeles para ocultar el ícono de Facebook y llenar completamente el área del enlace con el ícono de Twitter. Dado que el ancho de cada icono es de 100 píxeles, desplazamos el fondo 100 píxeles hacia la izquierda. No vamos a cambiar el posicionamiento vertical en ninguna parte todavía, pero dejaremos el valor en la parte superior:

A.twitter (posición de fondo: -100px arriba;)

Haremos una acción similar para los enlaces restantes, agregando otros 100 píxeles a cada posicionamiento horizontal posterior, moviendo así el sprite cada vez más hacia la izquierda. Obtendrá esta imagen:

A.youtube (posición de fondo: -200px arriba;) a.instagram (posición de fondo: -300px arriba;) a.linkedin (posición de fondo: -400px arriba;) a.tumblr (posición de fondo: -500px arriba ; ) a.google (posición de fondo: -600px arriba;)

El resultado de este código se muestra en la siguiente captura de pantalla:


Ahora veamos el comportamiento de las imágenes de fondo cuando pasa el cursor sobre un enlace. Necesitamos mover el objeto verticalmente hacia arriba para que el ícono de la fila inferior del objeto caiga en el área de visualización. Todo aquí es bastante simple y se puede resolver con una regla CSS, es decir, asignar el valor inferior a la propiedad background-position-y:

A: flotar (fondo-posición-y: abajo;)

En nuestro caso, este estilo se puede escribir para todos los enlaces y funcionará correctamente. Sin embargo, en otras situaciones en las que los elementos del objeto están en un orden diferente, es posible que necesites escribir más código.

Vea las demostraciones a continuación para ver el resultado de los sprites en funcionamiento (para que el ejemplo sea más hermoso, hicimos que el fondo cambiara más suavemente al pasar el cursor):


Si estabas interesado, aquí tienes la línea que se encarga del suave cambio de iconos (no te preocupes, un poco más adelante estudiaremos la animación CSS, y en particular la propiedad de transición):

A (transición: todos los 0,2 s salen lentamente;)

Ahora ya sabes qué son los sprites CSS y cómo pueden ser útiles. Además de evitar retrasos al cargar imágenes de fondo, el uso de sprites ayuda a reducir la carga en el servidor. Además, esta es una forma cómoda de almacenar todos los elementos de la interfaz gráfica en un solo lugar.

Por eso, hemos analizado los principales métodos de diseño de enlaces. Le recomendamos que practique más para consolidar los conocimientos adquiridos. Y el siguiente capítulo de nuestro libro está dedicado a la animación CSS, cuya implementación fue posible gracias a las propiedades que aparecieron en CSS3. Y en la primera lección analizaremos la propiedad de transformación:

Los duendes son uno de los fenómenos naturales más bellos de nuestro planeta: increíbles relámpagos, también llamados "espíritus celestiales".

Los duendes son relámpagos inusuales que pueden sorprender a una persona no solo por su belleza divina, sino también por su comportamiento no estándar, como ocurre con los relámpagos. Estamos acostumbrados a que los rayos ordinarios caigan desde las nubes hasta el suelo. En cuanto a los duendes, aquí la situación es diferente: se disparan hacia arriba, creando un espectáculo increíblemente hermoso en la esfera celeste.

Los sprites se registraron por primera vez en 1989. El primero en verlos fue el astrónomo estadounidense John Winkler, que trabajó para la NASA durante casi medio siglo. El científico descubrió los rayos por accidente mientras observaba una tormenta para una investigación científica. Por primera vez vio estos relámpagos dirigidos verticalmente hacia arriba, no creyó lo que veía. Winkler también se sorprendió por el hecho de que tal descarga apareciera a una altura inusualmente alta, como ocurre con un rayo común. Dirigido verticalmente hacia arriba, podría representar un peligro para los dispositivos lanzados al espacio, los aviones y otras máquinas voladoras. Por este motivo, John Winkler decidió seguir estudiando este inusual fenómeno.

En la noche del 22 al 23 de septiembre de 1989, Winkler, utilizando una cámara de cine de alta velocidad, logró capturar enormes destellos de luz que se extendían de abajo hacia arriba en el cielo. El científico, que utilizó equipos obsoletos, creía que estos rayos se producían a una altitud de 14 kilómetros, lo que es bastante aceptable para los rayos normales. Posteriormente, cuando los modernos centros de investigación y laboratorios comenzaron a estudiar los duendes, se demostró que estos fenómenos naturales aparecen a una altitud de al menos 55 km. A tal altura, no podrás encontrar ni una sola descarga celeste que se dirija hacia la Tierra.

El mecanismo por el cual aparecen los sprites.

Interesados ​​en los datos sobre los duendes que Winkler presentó a los empleados de la NASA, los científicos lanzaron casi de inmediato una campaña a gran escala para estudiar este fenómeno natural. En la primera noche de investigación, descubrieron alrededor de 200 relámpagos en la ionosfera. Los destellos de luz ocurrieron principalmente entre 50 y 130 kilómetros sobre la superficie terrestre. Este espectáculo deleitó y asustó por igual a los científicos, ya que en ese momento muchos de ellos aún no sabían qué esperar realmente de los duendes. Los temores de los científicos eran comprensibles, ya que los duendes tenían todas las posibilidades de convertirse en una amenaza directa para los aviones de gran altitud. Para eliminar la posibilidad de esta amenaza, los científicos decidieron estudiar el mecanismo por el cual surgen los duendes.

Después de realizar una serie de observaciones de duendes, los científicos descubrieron que este fenómeno ocurre principalmente solo durante una tormenta, tormenta o huracán muy fuerte. La mayoría de los rayos comunes que llegan al suelo caen desde la parte cargada negativamente de la nube. Sin embargo, un cierto porcentaje de ellos se origina en la parte cargada positivamente. Se ha comprobado que el rayo que se origina en esta zona tiene una carga más fuerte y, en consecuencia, fuerza. Se cree que los duendes se originan en la parte de la nube cargada positivamente.

Un estudio detallado de los duendes mostró que salen disparados desde debajo de la nube hacia la ionosfera. En algunos casos, parte de este rayo (la cola del duende) desciende hacia el suelo, pero nunca llega a él. La observación y el análisis de los destellos en la atmósfera superior han demostrado que los rayos producidos en esta región pueden variar en color, forma y altura a la que aparecen. Con base en estos criterios, los científicos decidieron clasificar el rayo superior, dividiéndolo en chorros, duendes y elfos.

Jets, duendes y elfos

Los chorros son destellos de luz que se observan a la distancia más cercana a la Tierra, de 15 a 30 kilómetros. Probablemente fueron registrados por John Winkler, quien en 1989 observó por primera vez relámpagos en la atmósfera superior. Los chorros tienen forma tubular. Suelen ser de color blanco azulado o celeste. Se conocen casos de aparición de aviones gigantes que alcanzaron una altura de unos 70 kilómetros.

Sprite es un tipo raro de rayo.

Los sprites son el tipo de relámpagos del que hablamos en este artículo. Aparecen a una altitud de 50 a 130 kilómetros y atacan hacia la ionosfera. Los sprites aparecen una fracción de segundo después de la caída de un rayo normal. Generalmente ocurren en grupos más que individualmente. La longitud de los duendes, por regla general, se mantiene en el rango de varias decenas de kilómetros. El diámetro de un grupo de duendes puede alcanzar los 100 km de diámetro. Los sprites son destellos de luz rojos. Aparecen y desaparecen rápidamente. La "vida útil" de un sprite es de sólo unos 100 milisegundos.

- la corona del relámpago atmosférico. Aparecen a una altitud de más de 100 km sobre la superficie terrestre. Los elfos suelen aparecer en grupos que se asemejan a un círculo.

El diámetro de un grupo de este tipo puede alcanzar los 400 km de diámetro. Además, los elfos pueden alcanzar hasta 100 km de altura, hasta las capas superiores de la ionosfera. Es extremadamente difícil detectar a los elfos, ya que "viven" no más de cinco milisegundos. Este fenómeno sólo puede captarse mediante equipos de vídeo modernos y especiales.

¿Cómo, dónde y cuándo se pueden observar los sprites?

Según el Mapa Geográfico de Tormentas Eléctricas, los residentes de las zonas ecuatoriales y tropicales del mundo tienen mayores posibilidades de ver duendes. Es en esta zona donde se producen hasta el 78% de todas las tormentas. Los residentes de Rusia también pueden ver duendes. El pico de tormentas eléctricas en nuestro país se produce en julio-agosto. Es en esta época cuando los amantes de la astronomía pueden ver un fenómeno tan hermoso como los duendes.

Según el Manual estadounidense de observaciones de duendes y jets gigantes, para poder ver duendes, un observador debe estar aproximadamente a 100 kilómetros de distancia del epicentro de una tormenta. Para observar los chorros, se debe orientar la óptica entre 30 y 35 grados hacia la zona de la tormenta. Luego podrá observar parte de la ionosfera a una altitud de hasta 50 kilómetros; es en esta zona donde aparecen con mayor frecuencia los chorros. Para observar los duendes, debes apuntar tus binoculares en un ángulo de 45 a 50 grados, lo que corresponderá a un área del cielo a una altitud de aproximadamente 80 km, el lugar donde nacen los duendes.

Para un estudio mejor y más detallado de los duendes, los jets y, más aún, los elfos, es mejor que el observador utilice un equipo de película especial que le permitirá registrar en detalle las llamaradas celestes. La mejor época para cazar duendes en Rusia es desde mediados de julio hasta mediados de agosto.

  • Los duendes, como los relámpagos, se encuentran no solo en la Tierra, sino también en otros planetas del sistema solar. Presumiblemente, fueron los duendes los que fueron registrados por los vehículos de investigación espacial durante las fuertes tormentas en Venus, Saturno y Júpiter.
  • Los duendes y elfos aparecen a altitudes tan elevadas debido a la fuerte ionización del aire por el polvo galáctico. A una altitud de más de 80 kilómetros, la conductividad actual es diez mil millones de veces mayor que en las capas superficiales de la atmósfera.
  • El nombre "duendes" proviene del nombre de los espíritus del bosque, de los que se habla en la comedia de William Shakespeare El sueño de una noche de verano.
  • Los duendes eran conocidos por la humanidad mucho antes de 1989. La gente ha expresado diferentes hipótesis sobre la naturaleza de este fenómeno, entre ellas que los destellos de luz son naves espaciales extraterrestres. Sólo después de que John Winkler logró filmar duendes en la ionosfera, los científicos demostraron que eran de origen eléctrico.
  • Los duendes, los jets y los elfos varían de color según la altitud a la que aparecen. El hecho es que en la atmósfera cercana a la Tierra se concentra más aire, mientras que en las capas superiores de la ionosfera se observa una alta concentración de nitrógeno. El aire arde con llamas azules y blancas, el nitrógeno con llamas rojas. Por esta razón, los chorros que se encuentran debajo de los duendes son predominantemente azules, mientras que los propios duendes y, más arriba, los elfos son de un tinte rojizo.
  • Los sprites son una tecnología bastante interesante y simple. Ahora os contaré un poco más al respecto.

    ¿Qué son los sprites CSS?

    En resumen, los sprites CSS son varias imágenes en un archivo. Hay un archivo, pero dentro de él hay varias imágenes. Al mismo tiempo, esto es completamente invisible para el visitante. A quien visita el sitio le parece que ve varias imágenes separadas.

    ¿Por qué es esto necesario? Los sprites reducen la cantidad de solicitudes de página realizadas por el usuario y reducen el tamaño total de las imágenes. Como resultado, el visitante verá el sitio más rápido.

    ¿Cómo se hace esto? Una imagen normal aumenta en ancho y alto, es decir, varias imágenes simplemente se colocan una al lado de la otra en una imagen normal. Luego, cada imagen individual de este conjunto se inserta en el bloque deseado con un ancho o alto determinado para que todas las demás imágenes no sean visibles. Todo el conjunto está recortado y sólo queda una imagen. Un duende. Todas las demás imágenes permanecen fuera del bloque específico.

    Para que quede más claro, daré una analogía. Imagina que estás mirando por el ojo de una cerradura. Sólo ves una parte separada de la habitación al otro lado de la puerta. Si te mueves un poco hacia un lado y miras la cueva desde un ángulo diferente, verás otra parte de la misma habitación.

    Terminología

    Para evitar confusiones, definamos inmediatamente los términos:
    Un sprite es una imagen de un archivo con varias imágenes.
    Un conjunto de sprites es un archivo con varias imágenes.

    Características del uso de sprites.

    ¿Cuándo deberías usar sprites? Generalmente hay una respuesta: se deben usar sprites si tienes muchas imágenes pequeñas en la página. No importa qué tipo de imágenes sean. Si tienes muchos degradados con la misma ubicación, muchos botones, muchos íconos, etc. Si hay muchas imágenes pequeñas en una página en particular, entonces podrías considerar usar sprites.

    Generalmente hay tres tipos de imágenes en una página: jpg, png y gif. Todos estos formatos tienen dos modos de descarga: modo normal y modo de descarga gradual.

    El formato jpg puede ser regular (básico) o progresivo (progresivo). En modo normal, la imagen comienza a mostrarse línea por línea a medida que se carga e inmediatamente en buena calidad. En el modo progresivo la imagen jpg se carga completa de una vez, pero en mala calidad y la calidad aumenta a medida que se carga.

    Gif y png tienen el mismo comportamiento. El GIF puede ser regular o entrelazado. PNG puede ser regular o entrelazado. El comportamiento de los gifs y pngs entrelazados es similar al de los jpg progresivos. Este comportamiento aumenta ligeramente el tamaño del archivo.

    Total. La imagen puede aparecer en la página inmediatamente o puede aparecer con un retraso. Es importante saber esto cuando se trata de sprites. Es recomendable hacer sprites entrelazados o progresivos. El usuario debería ver las imágenes lo más rápido posible, aunque en mala calidad.

    ¡Pero! Si el archivo final con todos los sprites es demasiado grande, a pesar de toda la progresividad y el entrelazado, el visitante tendrá que esperar incluso a que se descargue parcialmente el archivo. Por lo tanto, no recomiendo usar grandes conjuntos de sprites. Si el archivo es grande, entonces se pierde por completo el objetivo de los sprites: acelerar el sitio. Con grandes conjuntos de sprites, el usuario tendrá que esperar tanto, si no más, que con imágenes divididas normales.

    Los archivos de más de 30 kilobytes me parecen grandes. Esto es subjetivo. Es posible que tenga sus propias ideas sobre el tamaño del archivo. Un archivo de 30 kilobytes se descargará en unos 7 segundos con una velocidad de Internet de 56,6 kbps.

    Ejemplos de uso de sprites Sprites con iconos

    En un sprite tendré íconos para:

  • Lista - un icono
  • Enlaces: tres iconos
  • Formularios de búsqueda: un icono
  • Es decir, mi primer conjunto de sprites contendrá cinco imágenes. Todas mis imágenes tendrán el mismo tamaño: 16 por 16 píxeles. Los sprites se pueden utilizar para crear imágenes con diferentes resoluciones; no es necesario que la resolución de todas las imágenes coincida. Con diferentes resoluciones de imágenes, resulta un poco más difícil combinar estas imágenes en un solo archivo.

    Como resultado, el primer ejemplo se verá así:

    Encontré cinco íconos. Luego simplemente los combiné todos en un solo archivo. Este es el archivo con el que terminé:

    Llamo vuestra atención. En este caso, los iconos no están ubicados cerca, hay pequeñas sangrías entre ellos. ¿Cómo elegir estas sangrías? Por supuesto, puede calcular todo píxel por píxel, pero nuestro caso es bastante simple, por lo que aquí es mejor seleccionar estas sangrías en la imagen de forma experimental. Primero, combinamos las imágenes simplemente a ojo, luego tomamos la imagen superior y la colocamos en el lugar correcto. Si la imagen está en su lugar, pero al mismo tiempo un trozo de otra imagen sobresale de algún lugar, entonces es necesario aumentar la sangría.

    Una cosa más. El último ícono de la lista es el ícono de lista: una flecha verde. ¿Por qué es ella la última? La ubicación de los iconos restantes en la imagen nos es indiferente, pero en la lista cualquier elemento puede ocupar varias líneas, y si la flecha verde está en algún lugar en el medio, otras imágenes sobresaldrán en las líneas siguientes. Mire la imagen de la lista de arriba para ver de qué estoy hablando.

    Entonces. Encontré cinco íconos y los combiné en un solo archivo. ¿Qué hacemos a continuación? Por supuesto escribimos el código:

    • Elemento de lista
    • Un elemento más de la lista
    • Elemento de lista
    • Un elemento más de la lista
      pero en dos lineas
    • Elemento de lista
    • Un elemento más de la lista

    Este es el código html de la lista. Ahora apliquemos nuestro sprite:

    Ul li( relleno:0 0 0 21px; fondo:url("sprites.png") 0 -94px sin repetición; )

    ¿Qué hemos hecho aquí? Sangrado cada uno

  • 21 píxeles desde el borde izquierdo para que el texto no oscurezca la imagen. Luego configura sprites.png como imagen de fondo. La altura de toda la imagen con sprites en este caso es de 110 píxeles y la flecha verde está al final. La altura de la flecha verde es de 16 píxeles, es decir, la flecha comienza después del píxel 94 desde la parte superior de la imagen. Esto significa que necesitamos mover el fondo 94 píxeles hacia arriba. En el código CSS está escrito como “0 -94px”, es decir, movido 0 píxeles hacia la derecha y 94px hacia arriba.

    Terminemos con la lista. Ahora hagamos enlaces aproximadamente de la misma manera:

    A( relleno:0 0 0 20px; fondo:url("sprites.png") 0 -42px sin repetición; ) a( relleno:0 0 0 20px; fondo:url("sprites..png") 0 -21px no repetir)

    ¿Qué significan los selectores a? Aparentemente este selector obliga al navegador a aplicar este estilo a todos los enlaces que tengan un atributo href cuyo valor comience con la cadena http://site/. El objeto en sí se usa de la misma manera que en el caso de una lista. Solo consideraré un enlace: un enlace a mi blog.

  • Determinamos el enlace deseado por href... Simplemente puede asignar una clase al enlace deseado o agregar estilos al atributo de estilo directamente en el código html. O identificar el enlace deseado utilizando cualquier otro método.
  • Hacemos un margen de 20 píxeles desde el borde izquierdo de un enlace concreto
  • Especifique la imagen sprites.png como imagen de fondo.
  • La imagen que elegí para mi blog está a 21 píxeles del borde superior, lo que significa que debemos mover el fondo 21 píxeles hacia abajo. En CSS lo escribí así: "0 -21px"
  • Sprites de tarea con degradados

    Ahora veamos el segundo ejemplo.


    Esta imagen muestra una ventana. Una ventana tiene un encabezado, cuerpo y pie de página. Cada uno de estos elementos tiene un degradado de fondo establecido. Mire más de cerca, si esto no es visible de inmediato, hay una transición de color de pálido a saturado.

    Te mostraré cómo los degradados de esta ventana se pueden convertir en sprites. El encabezado y pie de página de la ventana tendrán una altura fija: 30 píxeles. El cuerpo de la ventana se estirará dependiendo de la longitud del texto.

    Ahora escribamos el código html para la ventana:

    Comencemos a usar sprites. Comencemos con el título de la ventana:

    #encabezado de ventana( altura:30px; fondo:#C0C0FF url("gradients.png") 0 0 repetir-x; )

    En el archivo gradients.png, primero hay un degradado para el encabezado, luego para el cuerpo y luego para la línea inferior. Es decir, el degradado del título comienza desde arriba. Por lo tanto, simplemente configuramos el archivo como fondo e indicamos la posición como "0 0", es decir, no retrocedemos a ningún lado. Para hacer que el degradado se estire horizontalmente, escriba "repetir-x".

    Para asegurarse de que todo el degradado encaje en el encabezado, establezca la altura en 30 píxeles.

    Establezcamos un degradado para el pie de página de la misma manera que para el encabezado:

    #pie de página de ventana (altura: 30 px; fondo: #C0FFC0 url ("gradients.png") 0 -60 px repetir-x;)

    Sólo que esta vez moveremos la imagen hacia abajo 60 píxeles.

    La situación con el cuerpo de la ventana es más complicada. Nuestro cuerpo se estirará, a diferencia del encabezado y el pie de página. Es decir, si simplemente creamos un div para el cuerpo de la ventana y colocamos un degradado allí, todos los degradados aparecerán en este div a la vez. Alternativamente, podemos poner el gradiente del cuerpo al final verticalmente, pero ¿qué pasa si tenemos varios gradientes para bloques que se estiran? No se puede hacer todo al mismo tiempo. Lo haremos un poco más inteligente.

    El código CSS será el siguiente:

    #window-body( posición:relativa; ) #window-body-gradient( posición:absoluta; izquierda:0; arriba:0; ancho:100%; altura:30px; fondo:url("gradients.png") 0 - 30px repetir-x; ) #texto-cuerpo-ventana( posición:relativa; )

    Ahora te contaré con más detalle lo que hicimos aquí. Aquí está el código html del cuerpo de la ventana por separado:

    Como podéis ver, tenemos dos divas más incrustadas en el cuerpo. El primer "gradiente del cuerpo de la ventana" será responsable del gradiente. El segundo "texto del cuerpo de la ventana" es para texto. Además, como se desprende claramente del código CSS, aplicamos posición: relativa; para todo el cuerpo de la ventana.

    Para el div gradiente especificamos posición:absoluta. Por lo tanto, eliminamos el gradiente div del flujo general. Ahora bien, este div no tiene ningún efecto sobre nada. Como hemos especificado la posición: relativa para todo el cuerpo, el div degradado no flota más allá del padre. Adjuntelo al borde izquierdo y superior del cuerpo de la ventana usando “left:0; arriba:0;". Establezca la altura del div degradado en 30 píxeles. Es decir, aquí indicamos la altura del degradado que adjuntaremos; si la altura del div es mayor que la altura del degradado, entonces otros sprites sobresaldrán en el div. Y finalmente, adjuntamos nuestro archivo gradients.png al div de gradiente. Como es habitual, movemos el fondo hacia arriba la distancia requerida; en este caso, movemos el fondo 30 píxeles hacia arriba.

    Ahora tenemos un degradado en el cuerpo de la ventana. Pero oscurece el texto. Para evitar que el texto se oscurezca, envolveremos todo el texto en un div y le asignaremos una posición: relativa. Una vez asignado, el texto estará encima del degradado.

    Eso es básicamente todo. Ahora hemos colocado todos los degradados en nuestra ventana. Y en el título, en el cuerpo y en el sótano.

    Hago explicaciones tan largas para que quede todo completamente claro. Pero, de hecho, si sabes un poco sobre diseño, probablemente te bastará con mirar los ejemplos mismos:

    Una vez más dupliqué el enlace.

    De hecho, puedes encontrar muchos ejemplos de uso de sprites. Sólo mostré dos ejemplos, pero estos ejemplos deberían ser suficientes para entender cómo funcionan los sprites. Si tienes alguna duda, pregunta en los comentarios.

    Primero, una breve introducción. Al cargar una página, a los navegadores solo se les permiten 2 solicitudes al servidor (en los navegadores modernos este número ha aumentado a 6). Cada elemento del sitio, ya sea un archivo con una hoja de estilo, archivos javascript o imágenes, son descargas independientes que requieren una solicitud por separado al servidor.

    Es posible que haya muchas miniaturas en el sitio. Por ejemplo, emoticonos, flechas, todo tipo de pequeños elementos de diseño. Cada una de estas imágenes pesa muy poco, pero debido a la gran cantidad de solicitudes, se crean problemas con la velocidad de carga del sitio.

    Hace mucho tiempo (2003-2004) se propuso una solución a esta situación con el objetivo principal de acelerar la carga del sitio reduciendo el número de solicitudes al servidor. Esta tecnología se llama "Sprites".

    ¿Qué son los sprites CSS?

    Sprite CSS es una tecnología para combinar imágenes pequeñas en una. Usando cambios vía CSS se logra recortar la parte deseada de la imagen.

    Por ejemplo, en lugar de 10 imágenes, se carga una, pero más grande. Con una distribución adecuada, esto acelera el sitio. Sin embargo, lo principal aquí es no exagerar. Combinar imágenes no siempre da una ventaja a la hora de cargar un sitio.

    Ejemplo de objeto CSS

    Veamos un pequeño ejemplo de una implementación de sprites CSS. Digamos que hicimos la siguiente imagen a partir de tres flechas separadas.

    Para acceder a la flecha deseada en CSS es necesario escribir

    .strelka (ancho: 15 px; alto: 15 px; flotante: izquierda; fondo: url(strelka.jpg) sin repetición;) .amarillo .strelka (posición de fondo: 0 0 px;) .green .strelka (posición de fondo: 0 -15px; ) .blue .strelka (posición de fondo: 0 -30px;)

    Así es como se ve en la página:

    En el ejemplo considerado, utilizamos sangrías negativas. Esto se hace para elevar la imagen. Por ejemplo, existe el siguiente objeto:


    Para cortar el icono RSS tenemos que escribir los siguientes guiones

    posición de fondo: -90px -40px;


    En el ejemplo, movimos la imagen 40 píxeles hacia arriba y 90 píxeles hacia la izquierda.

    Ventajas de usar sprites
    • Reducir el número de llamadas al servidor
    • Si se utilizan cambios dinámicos en la imagen (por ejemplo, al pasar el cursor sobre un elemento del menú), entonces la imagen ya estará en el caché y, por lo tanto, no habrá demoras en la carga en el momento adecuado.
    • Si el fondo de las imágenes combinadas es similar, esto también reducirá el “peso” total de las imágenes.

    Entre las desventajas de los sprites: la complejidad del trabajo en el caso de mano de obra. Pero, afortunadamente, existen servicios gratuitos que están listos para simplificar su trabajo y hacer todo por usted.

    Apreciado:
    27



    No me gustó: 4

    No hay traducción disponible.



    duende

    antes o después "antes" "después" "después"

    pájaro_enfadado enojado.png.


    No hay traducción disponible.


    índice.html


    Entonces, aplicable al diseño web, un sprite es solo un archivo grande que contiene varias imágenes para su sitio, lo que ahorra tiempo en la descarga y transferencia del archivo a través de la red. Cuando un sprite, por ejemplo, contiene entre 20 y 30 imágenes, esto puede aligerar significativamente la carga en el servidor, ya que si estas imágenes se almacenaran por separado, el servidor tendría que realizar entre 20 y 30 solicitudes separadas para obtener cada una de esas imágenes. Gracias al sprite, solo se envía una solicitud HTTP al servidor para recibir una sola imagen. Es posible que un sprite no sea visualmente “legible” a simple vista, ya que su tarea principal es solo ensamblar las diferentes “piezas” de su diseño. Por ejemplo, un objeto podría verse así:

    La mayoría de los sitios modernos utilizan sprites y el conocido VKontakte no es una excepción. Por ejemplo, así es como almacena "piezas" de la interfaz en un archivo, es decir, iconos familiares:

    Lo mejor de usar sprites CSS es que solo necesita enviar al servidor un archivo gráfico que contenga todas sus imágenes, en lugar de muchas imágenes individuales, y a través de CSS puede mostrar cualquier pequeño segmento de ese archivo gráfico como fondo de un elemento. Algunas personas piensan que las imágenes individuales se cargan más rápido, pero esto no es cierto. Cuando cargamos un archivo gráfico con muchas imágenes, enviamos solo una solicitud al servidor, y cuando cargamos una gran cantidad de imágenes, enviamos más solicitudes al servidor. La combinación de imágenes en un archivo no solo reduce significativamente la cantidad de solicitudes HTTP, sino que también reduce el tamaño general del archivo de imagen.

    Déjame darte otro ejemplo de un sprite. Así almacena elementos gráficos una conocida web occidental dedicada al diseño:

    Quizás te preguntes: ¿cuándo es el mejor momento para preparar un objeto? Hay dos enfoques diferentes para esto.

    Diferentes enfoques: crear un objeto antes y después de crear el sitio

    Hay dos enfoques comunes al crear una hoja de sprites: hazla antes o después de crear tu sitio. Puedes colocar todas las imágenes en una hoja de sprites antes de crear el sitio. Esto es lo que llamamos el enfoque "antes". Además, puedes crear todas las imágenes como archivos separados, lo que facilita su edición. Una vez que el sitio esté construido y todas las imágenes estén preparadas, puede crear rápida y fácilmente una hoja de sprites, ya sea manualmente o usando una de varias herramientas. A esto lo llamaremos el enfoque "después". Si las hojas de sprites son nuevas para usted o es nuevo en el diseño web, entonces el enfoque "después" será más adecuado para usted. Existen muchas utilidades, servicios y programas para ayudarte a crear sprites, la mayoría de los cuales se distribuyen y están disponibles de forma gratuita.

    Organizar las imágenes en el sprite de manera organizada.

    A la hora de crear un sprite en Photoshop, es recomendable colocar inmediatamente todas las imágenes de forma organizada y en una secuencia determinada que elijas, para que luego trabajar con ellas sea fácil y sencillo. Intenta siempre redondear el espacio de cada imagen de sprite a los 10 píxeles más cercanos, o deja más espacio alrededor de ellas si todas son del mismo tamaño. Cuando se trata de escribir el estilo CSS, no tendrá que anotar las medidas de coordenadas y será menos probable que olvide los números de coordenadas de las imágenes que desea. Aquí hay un ejemplo de cómo colocar con éxito diferentes imágenes en un objeto:

    ¡De la teoría a la práctica! Crea un pájaro animado de Angry Birds usando un sprite

    Entonces, nos familiarizamos con el concepto de sprite en el diseño web, pero la teoría sin práctica no es nada. Por lo tanto, ahora crearemos nuestro primer sprite y aprenderemos cómo hacer una animación simple en una página HTML. Nuestro ejemplo se basará en un personaje del juego Angry Birds: este es un divertido pájaro rojo. Primero, preparemos una imagen de sprite en formato .PNG que contenga 4 fases de animación de pájaros:

    Creemos un directorio enojado_bird en algún lugar del disco; colocaremos nuestros archivos de ejemplo allí. Guardamos el sprite con pájaros en este directorio y llamamos al archivo enojado.png.


    El siguiente paso es crear un archivo en el mismo directorio llamado index.html; esta será nuestra página de prueba con animación. A continuación, abra este archivo en el editor y coloque el siguiente código allí:


    Déjame explicarte un poco lo que hemos hecho ahora. Primero, configuramos nuestro documento HTML con codificación UTF-8, lo que significa que debemos guardar nuestro index.html en esa codificación. También puede configurar otro, por ejemplo, Windows-1251; para nuestra tarea esto no es importante. A continuación, conectamos el archivo style.css al documento (aún no está en nuestro directorio enojado_bird, lo crearemos un poco más tarde). También configuramos un enlace a un script externo y conectamos la biblioteca jQuery; usando jQuery cambiaremos dinámicamente las imágenes de nuestro pájaro y cambiaremos sus "fases" del sprite. También hemos preparado un bloque interno de JavaScript, donde luego colocaremos el código que realiza la animación del pájaro. Y finalmente, el cuerpo principal del documento contiene un único hipervínculo, dentro del cual hay un bloque DIV, y su ID está establecido en birdImage y la clase predeterminada es bird-sleeping. Esto significa que nuestro pájaro estará "durmiendo" al abrir la página (esto corresponde a la imagen inferior izquierda dentro del objeto) donde tiene los ojos cerrados. Ahora es el momento de "cortar" nuestro sprite, es decir. seleccione imágenes individuales de él.

    Cortar un sprite usando el servicio SpriteCow.Com

    La tarea de "cortar" un objeto requiere bastante mano de obra: requiere cuidado de no cometer errores con las coordenadas que definen cada imagen en el objeto. Afortunadamente, hoy en día existen servicios que eliminan por completo este dolor de cabeza del diseñador y maquetador. Utilizo el servicio http://spritecow.com para cortar y os lo recomiendo. La esencia del servicio es simple y muy conveniente: seleccionamos cada imagen de pájaro con el mouse y SpriteCow nos proporciona un código CSS listo para usar con coordenadas. ¡Todo lo que tenemos que hacer es simplemente establecer 4 estilos para cada fase del pájaro! Al ingresar al sitio, vemos 2 botones: "Abrir imagen" y "Mostrar ejemplo". Necesitamos el primer botón, haga clic en él:

    En el cuadro de diálogo que se abre, seleccione nuestro archivo sprite enojado.png, después de lo cual vemos cómo nuestro sprite se ha cargado en el sitio. A continuación, debemos determinar el color de fondo, para hacer esto, haga clic en la barra de herramientas "Seleccionar fondo" y apunte al área blanca de nuestro sprite; esto nos permitirá recortar correctamente cada fase del pájaro:

    Seleccione la primera imagen y obtenga automáticamente el código CSS correspondiente:

    Ahora es el momento de crear un archivo style.css en nuestro directorio enojado_bird. Allí insertamos secuencialmente 4 piezas de código CSS generadas, pero en lugar de la clase .sprite estándar que nos ofrece SpriteCow, llamemos a nuestros estilos con mayor claridad. Además, dado que almacenamos la imagen del sprite directamente en la raíz del directorio, eliminaremos el elemento de ruta innecesario - imgs/ de la propiedad de fondo. Lo tengo así:


    /* pájaro "normal". Imagen superior izquierda en el sprite */ .bird-normal ( fondo: url("angry.png") no-repeat -12px -16px; ancho: 97px; alto: 94px; ) /* Pájaro "feliz". Imagen superior derecha en el sprite */ .bird-happy ( fondo: url("angry.png") no-repeat -118px -17px; ancho: 97px; alto: 94px; ) /* Pájaro "durmiente". Imagen inferior izquierda en el sprite */ .bird-sleeping ( fondo: url("angry.png") no-repeat -12px -120px; ancho: 97px; alto: 94px; ) /* Pájaro "enojado". Imagen inferior derecha en sprite */ .bird-angry (fondo: url("angry.png") no-repeat -118px -120px; ancho: 97px; alto: 94px;)


    El último paso es escribir el código jQuery que crea la animación.

    Ahora que hemos cortado con éxito el objeto y colocado 4 estilos para cada imagen en nuestro archivo style.css, todo lo que tenemos que hacer es escribir código jQuery que agregará una animación cuando pasemos el cursor sobre nuestro hipervínculo y cuando el enlace se hace clic. Como recordamos, por defecto tenemos la clase bird-sleeping, es decir. nuestro pájaro rojo “dormirá” al abrir un documento :)

    Toda la animación se basará en 3 métodos jQuery:

    • hover: controlador para pasar el cursor sobre un enlace y alejar el cursor del enlace. Cuando pasamos el cursor, el pájaro se "despertará", es decir. la clase se volverá normal como un pájaro
    • mousedown: controlador para hacer clic con el botón izquierdo del mouse en un enlace. Al mismo tiempo, el pájaro se volverá "feliz", es decir. Al bloque DIV se le asignará la clase pájaro feliz
    • mouseup: controlador de liberación del botón izquierdo del mouse. Cuando se suelta, el pájaro se "enojará", es decir, Al bloque DIV se le asigna la clase pájaro enojado

    Entonces, pegamos el siguiente código en el lugar que preparamos en el bloque interno de JavaScript colocado en la página:


    $(document).ready(function() ( // aquí está el código jQuery que crea la animación $("#birdImage").hover(function() ( $(this).removeClass("bird-sleeping"); $ (this).removeClass("pájaro enojado"); $(this).removeClass("pájaro-feliz"); $(this).addClass("pájaro-normal"); ).removeClass("pájaro-normal"); $(this).removeClass("pájaro-enojado"); $(this).removeClass("pájaro-feliz"); " " )); $("#birdImage").mousedown(function() ( $(this).removeClass("pájaro-durmiendo"); $(this).removeClass("pájaro-normal"); $ ( this).removeClass("pájaro enojado"); $(this).addClass("pájaro-feliz"); mouseup(function() ( $(this).removeClass("pájaro-durmiendo"); $ (esto ).removeClass("pájaro-normal"); $(this).removeClass("pájaro-feliz"); $(this).addClass("pájaro-enojado" ));


    ¡Listo! Animación de prueba

    Bueno, ¡eso es todo! ¡Nuestro pájaro está listo y ha dado vida a la página con su animación! :) Puedes ver la demostración. Descargue el archivo con un ejemplo al final del artículo.




    
    Arriba