PageSpeed OptiPic - optimización automática del sitio para los requisitos de Google Pagespeed Insights
JavaScript: Fusión, compresión, carga perezosa. CSS: compresión de tamaño y optimización de carga. Optimización de imágenes. Optimización de widgets de terceros y sistemas de análisis.

Para imágenes responsive con diferentes relaciones de aspecto, ¿cuál es una buena manera de minimizar el cambio acumulativo de diseño?

Si tienes un elemento <picture> con fuentes de imagen en diferentes relaciones de aspecto en diferentes puntos de interrupción, ¿cuál es la mejor manera de minimizar CLS utilizando las relaciones de aspecto y media queries en CSS?

#1

Para <picture>, debería estar bien mientras cada imagen de <source> tenga la misma relación de aspecto en su fragmento de imagen receptiva:

<img width="1000" height="1000" src="puppy-1000.jpg" srcset="puppy-1000.jpg 1000w, puppy-2000.jpg 2000w, puppy-3000.jpg 3000w" alt="Cachorro con globos"/>

Para <picture> donde cada <source> tiene una relación de aspecto diferente, los navegadores esperan la estandarización de que se recomiende el ancho / alto para cada <source> para el caso de uso de la dirección de arte:

<picture> <source srcset="https://via.placeholder.com/600x279" media="(max-width: 599px)" width="600" height="279"> <source srcset="https://via.placeholder.com/1500x300" media="(max-width: 991px)" width="1500" height="300"> <img src="https://via.placeholder.com/1500x300" width="1500" height="300"> </picture>

Mientras tanto, puede proporcionar height a través de trucos de CSS con padding-top, con diferentes media queries para cada punto de quiebre de <picture>.

#2

El elemento de origen que admite atributos de dimensión ahora forma parte del estándar HTML - https://html.spec.whatwg.org/multipage/embedded-content.html#the-source-element

La estandarización coincide con la implementación de ejemplo proporcionada por @addyo.

Para el caso de uso de dirección de arte de un <picture>, donde cada <source> tiene una relación de aspecto diferente, cada <source> puede proporcionar su propio valor de width y height.

<picture> <source srcset="https://via.placeholder.com/600x279" media="(max-width: 599px)" width="600" height="279"> <source srcset="https://via.placeholder.com/1500x300" media="(max-width: 991px)" width="1500" height="300"> <img src="https://via.placeholder.com/1500x300" width="1500" height="300"> </picture> 

La implementación para el soporte del navegador está en marcha y debería poder seguirse pronto en caniuse.

?