2j4d6c

Presentación del Elemento  <picture> 3e1519

El elemento <picture> ofrece un enfoque declarativo hacia la carga recurso de imagen. Los desarrolladores web ya no necesitarán CSS o jаvascript  para manejar las imágenes en diseños sensibles. Y los s se benefician de forma nativa optimizando recurso de imagen de carga, especialmente importante para los s de conexiones de móviles de Internet más lentas.


Junto a la nueva srcset y tamaños (sizes) atributos recientemente añadidos a <img>, el elemento <picture> da a los desarrolladores web más flexibilidad en la especificación de los recursos de imagen. Escribe el marcador en HTML y dejar que el navegador haga el trabajo de detectar cualquiera de los siguientes escenarios, tiempos de carga, solos o en combinación, para apoyar diseños sensibles y mejorar:

Selección basada dirección-Art

¿Es esto un dispositivo móvil que tuvo lugar en una orientación vertical o un amplio monitor de escritorio? Cargue una imagen que está optimizado para las dimensiones de la pantalla dadas.

Selección basada Dispositivo-pixel-ratio
¿El dispositivo tiene una pantalla de alta DPI? Cargue una imagen de mayor resolución.

Selección basada en Viewport
¿La imagen pretende siempre llenar una proporción fija de la ventana? Cargar imágenes en relación con el área de visualización.

Selección basada formato de imagen
¿Pueden los tipos de apoyo navegador adicionales de archivo de imagen que ofrecen mejoras de rendimiento, tales como archivos de menor tamaño? Carga un archivo de imagen alternativa como WebP.

El uso para la dirección de arte 156c5e

El uso más común del elemento <picture> será de "dirección de arte" en diseños sensibles. En lugar de tener una imagen que se escala hacia arriba o abajo basándose en el ancho de visualización, las imágenes múltiples pueden ser diseñados para llenar más apropiadamente la ventana del navegador.

El resultado de la utilización de una sola imagen que se escala hacia arriba o hacia abajo dependiendo de la anchura de la ventana gráfica.

Utilice varias imágenes diferentes para llenar más apropiadamente la ventana del navegador.

Mejorar el rendimiento de carga de recursos 43263j

Al usar <picture><img> con el srcset y tamaños de atributos, el navegador sólo se descargará la imagen que explícitamente para el escenario de juego. Esta aplicación nativa es compatible con programas de análisis de HTML y puede tomar ventaja de la imagen de caché del navegador y habilidades de precarga.

Vea una demostración en vivo 681f1p

Es un hecho que Internet fue creado para albergar imágenes de gatos. Usando<picture> podemos emular la sorprendente capacidad de los gatos para ajustar al espacio que se les da, no importa cuán grande o pequeño.

Abra la demo en una nueva pestaña con Cromo 38 o superior. Cambiar el tamaño de la ventana para ver el gato en acción.


Como punto de partida, esta demo sólo muestra fuera el mínimo de características que <picture> tiene para ofrecer. Vamos a profundizar en la sintaxis ahora.

El sintaxis <picture>  b3e55

El siguiente fragmento de código HTML y CSS es todo lo que se utiliza para implementar la demo:

<style>
  img {display: block; margin: 0 auto;}
</style>

<picture>
  <source 
    media="(min-width: 650px)"
    srcset="images/kitten-stretching.webp">
  <source 
    media="(min-width: 465px)"
    srcset="images/kitten-sitting.webp">
  <img 
    src="images/kitten-curled.webp" 
    alt="a cute kitten">
</picture>

Nota cómo no hay jаvascript involucrados y las bibliotecas no-terceros. El CSS <style> bloque se utiliza sólo para estilizar el elemento de la imagen y no contiene preguntas de los medios. La implementación nativa del <picture> elemento significa que usted puede declarar sus imágenes sensibles utilizando sólo HTML.

Utilizar con <fuente> elementos 37yh

El <picture> elemento no tiene atributos únicos de su propia. La magia sucede cuando <picture> se utiliza como contenedor de <origen>.

El <source> elemento, que se utiliza para los medios de carga, tales como video y audio, se ha actualizado para una imagen de carga y se han añadido estos nuevos atributos:

srcset (requerido)

Acepta una sola ruta de archivo de imagen (por ejemplo srcset ="kitten.webp").


O una lista delimitada por comas de las rutas de archivos de imagen con descriptores densidad de píxeles (por ejemplo srcset = "kitten.webp, kitten@2X.webp 2x"), donde se asume un descriptor 1x cuando se deja fuera. Consulte Combinar con descriptores densidad de píxeles para este en uso.

los medios de comunicación (opcional) t3k61

Acepta cualquier consulta de medios válida que normalmente se encuentra en una CSSmedia selector (por ejemplo = medios de 

comunicación "(max-width: 30em)"). Consulte la anterior <picture> sintaxis ejemplo de esto está en uso.

Tamaños (opcional) 3j2615

Acepta un solo descriptor de ancho (por ejemplo, tamaños = "100vw") o una sola consulta de medios con descriptor de ancho (por ejemplo, tamaños = "(max-width: 30em) 100vw"). O una lista delimitada por comas de las consultas de los medios de comunicación con un descriptor de ancho (por ejemplo, tamaños = "(max-width: 30em) 100vw, (max-width: 50em) 50vw, Calc (33vw -100px)") en el que el último elemento la lista se utiliza como valor predeterminado.

Consulte Combinar con descriptores ancho de este en uso.

Tipo (opcional) 171x3f

Acepta un tipo compatible MIME (por ejemplo, type = "image / webp" otype = "image / vnd.ms-foto"). Consulte Carga de formatos de archivo de imagen alternativos para este en uso.


El navegador utilizará los consejos para pasar como valores de atributo la carga del recurso de imagen más apropiada. La orden de la lista de etiquetas importa!, El navegador usará la primera <source> elemento con un toque a juego e ignorar cualquier siguientes <source> etiquetas.

Añadir una etiqueta <img> elemento final 53331y

El <img> elemento también se ha actualizado para ser utilizado dentro de <picture> como el de reserva en caso de un navegador no soporta el elemento de imagen o si no hay etiquetas de elemento de origen se corresponden. Usando <img> dentro de <picture> es un requisito -si se le olvida, no hay imágenes se mostrarán.


Utilice <img> para declarar la imagen predeterminada que se utiliza dentro de un <picture> bloque. Lugar <img> como el último hijo de <picture> desde el navegador ignorará cualquier <fuente> declaraciones que se producen después de un <img> se encuentra la etiqueta. La etiqueta de la imagen es también donde se debe adjuntar un texto alternativo mediante el elemento de imagen alt atributo.

Combine con descriptores densidad de píxeles 2w1p67

Añadir soporte para pantallas de alta resolución utilizando descriptores densidad de píxeles como 1x, 1.5x, 2x, 3x y. El nuevo atributo srcset aplica tanto <img> y <fuente> elementos.

El siguiente ejemplo es compatible 1x, 1.5x, y 2x pantallas de resolución:

<picture>
  <source 
    media="(min-width: 650px)" 
    srcset="images/kitten-stretching.webp,
            images/kitten-stretching@1.5x.webp 1.5x,  
            images/kitten-stretching@2x.webp 2x">
  <source 
    media="(min-width: 465px)" 
    srcset="images/kitten-sitting.webp,
            images/kitten-sitting@1.5x.webp 1.5x
            images/kitten-sitting@2x.webp 2x">
  <img 
    src="images/kitten-curled.webp" 
    srcset="images/kitten-curled@1.5x.webp 1.5x,
            images/kitten-curled@2x.webp 2x"
    alt="a cute kitten">
</picture>

Combine con descriptores de ancho 6f5a20

Fundamentos Web cubre los nuevos atribuyen tamaños para la <img> elemento en profundidad:

"Cuando no se conoce el tamaño final de la imagen, puede ser difícil especificar un descriptor de densidad para las fuentes de imagen. Esto es especialmente cierto para las imágenes que abarcan un ancho proporcional del navegador y son fluidos, dependiendo del tamaño de el navegador.
En lugar de suministrar tamaños de imagen fija y densidades, el tamaño de cada imagen suministrada se puede especificar mediante la adición de un descriptor de anchura a lo largo con el tamaño del elemento de imagen, permitiendo que el navegador para calcular automáticamente la densidad de píxel efectivo y elegir la mejor imagen para descargar. "

He aquí un ejemplo del uso de los tamaños de atributos para establecer la proporción de una imagen para llenar siempre el 80% de la ventana gráfica. Se combina con el srcset atributo para abastecer cuatro versiones de la misma foto del faro en anchos de 160px, 320px, 640px y 1280px de ancho:

<img src="lighthouse-160.webp" alt="lighthouse"
     sizes="80vw"
     srcset="lighthouse-160.webp 160w, 
             lighthouse-320.webp 320w,        
             lighthouse-640.webp 640w,
             lighthouse-1280.webp 1280w">

El navegador utilizará estos consejos para elegir el recurso de imagen más adecuada para servir en base a la resolución de ancho de la ventana gráfica y la pantalla de hardware:

Por ejemplo, la ventana gráfica de la izquierda es de aprox. 800px de ancho.El navegador cargará faro-640.webp menos que la proporción de píxeles dispositivo cuyo caso, faro-1280.webp se cargará lugar en 2x.
 

Con la adición de <picture>, los tamaños de atributos se pueden aplicar a ambos <img> y <fuente> elementos:

<picture>
  <source media="(min-width: 800px)"
          sizes="80vw"
          srcset="lighthouse-landscape-640.webp 640w,
                  lighthouse-landscape-1280.webp 1280w,
                  lighthouse-landscape-2560.webp 2560w">
  <img src="lighthouse-160.webp" alt="lighthouse"
       sizes="80vw"
       srcset="lighthouse-160.webp 160w,
               lighthouse-320.webp 320w,
               lighthouse-640.webp 640w,
               lighthouse-1280.webp 1280w">
</picture>

Basándose en el ejemplo anterior, cuando la ventana está a 800px y por encima, el navegador le servirá una versión paisaje de la versión de faro en su lugar:

La ventana de la izquierda está por encima de 800px de ancho por lo que se mostrará una versión paisaje de la foto del faro.

Cargar formatos de archivo de imagen alternativos 186r25

El tipo de atributo de <origen> se puede utilizar para cargar formatos de archivo de imagen alternativos que podrían no ser compatibles con todos los navegadores. Por ejemplo, puede servir una imagen en formato WebP para navegadores que lo soportan, mientras que cae de nuevo a un JPEG en otros navegadores:

<picture>
  <source type="image/webp" srcset="images/butterfly.webp">
  <img src="images/butterfly.webp" alt="a butterfly">
</picture>

Ejemplos de código adicionales 22333p

Consulte Imágenes Responsive: Casos de Uso y documentados fragmentos de código para empezar en el blog Dev.Opera de una lista exhaustiva de ejemplos combinando <picture> y <img> con los srcset, medios de comunicación, tamaños y tipo de atributos.

Pruébelo hoy 2i116v

Ver la demo del elemento <picture>

El <picture> elemento es actualmente disponible de Chrome 38. Pruébalo con emulación de pantalla en los DevTools Chrome.

Si tiene comentarios acerca de esta nueva característica, envíanos una línea en el error de seguimiento de Chrome.

Si usted está listo para empezar a aplicar <picture> hoy, sino también querer añadir soporte para imágenes de respuesta en los navegadores adicionales, consulte esta muestra del elemento <picture>  para el uso de <picture> con un polyfill.

Asegúrese también de comprobar hacia fuera la guía para imágenes en Fundamentos Web de ejemplos de mejores prácticas de implementación de imágenes en la web. Fuente en ingles

Compartir

Mi nombre es Alexander fundador y CEO, y me gusta llamarme un Geek. Amo la informática, tecnología y todo lo que está relacionado con ella. Inicié este sitio con la intención de compartir conocimientos como cursos en línea, tutoriales y videotutoriales. Estoy muy entusiasmado con la información que he descubierto y compartido hasta el momento. La verdad es que lo he hecho con el mayor de los gustos. Así es, soy un Geek con una visión para compartir conocimiento. Leer mas...