Une conception réactive nécessite un équilibre entre performances et flexibilité - la diffusion d'une image correctement dimensionnée et optimisée pour tous les appareils possibles ne devrait pas signifier un temps de chargement lent.
Compte tenu de la variété des méthodes de mise en œuvre de la conception réactive, il est important de comprendre celles qui fonctionnent le mieux pour différents cas d'utilisation.
Dans ce didacticiel, nous verrons quand utiliser l'élément <picture>
et comment l'implémenter le plus efficacement avec imgix.
L'imagerie réactive est généralement utilisée pour résoudre l'un des deux problèmes suivants : la nécessité de modifier l'image pour l'adapter à une conception qui change en fonction de l'appareil (direction artistique) ou la nécessité d' ajuster la résolution de l'image à l'appareil (changement de résolution).
En termes d'implémentation, c'est un choix entre donner au navigateur suffisamment d'informations pour décider quelle version de l'image utiliser ou la commander directement.
L'élément <picture>
est mieux utilisé pour le cas d'utilisation de la direction artistique, car les modifications requises comprendront probablement la modification des rapports d'aspect, le recadrage de l'image différemment et d'autres aspects de conception qui sont plus complexes que la simple diffusion d'une image à plus haute résolution.
Dans ce cas, vous souhaitez commander directement le navigateur, malgré l'impact potentiel sur les performances.
<picture>
pour la direction artistique imgix présente deux avantages principaux lors de l'utilisation de l'élément <picture>
. Tout d'abord, il supprime le besoin de conserver des copies séparées et prétraitées de l'image pour chaque taille de fenêtre. Appliquez tous les paramètres nécessaires pour ajuster la taille, le recadrage et le ratio de pixels de l'appareil.
Deuxièmement, cela aide à minimiser les performances en optimisant l'image et en mettant en cache toutes les différentes versions demandées.
Remarque : L'élément <picture>
n'est pas disponible pour certains anciens navigateurs. Vous pouvez utiliser Picturefill pour ajouter la prise en charge de ces clients.
Voyons comment tout cela s'emboîte. Nous commencerons par une image en orientation paysage, puis fournirons différents paramètres pour montrer la partie la plus significative de l'image pour différents appareils qui peuvent avoir d'autres orientations.
Cliquez sur l'image pour voir les modifications de la fenêtre d'affichage en taille réelle
<picture> <source srcset="https://assets.imgix.net/blog/unsplash-kiss.jpg?w=1280" media="(min-width: 1280px)" > <source srcset="https://assets.imgix.net/blog/unsplash-kiss.jpg?w=768&h=1024&fit=crop" media="(min-width: 768px)" > <source srcset="https://assets.imgix.net/blog/unsplash-kiss.jpg?w=568&h=320&fit=crop" media="(min-width: 480px)" > <img src="https://assets.imgix.net/blog/unsplash-kiss.jpg?w=320&h=568&fit=crop"> </picture>
Même s'ils ne sont pas exactement dimensionnés par rapport à l'appareil (compte tenu de la grande variété de tailles d'écran disponibles), la définition de quelques points d'arrêt simples dans la fenêtre et l'application de quelques paramètres peuvent vous permettre d'atteindre la majeure partie du chemin avec beaucoup moins de frais généraux que de générer différentes images originales pour chaque taille.
Vous pouvez continuer à augmenter le nombre de points d'arrêt selon vos besoins, en fonction de ce que vous savez des appareils de vos utilisateurs.
Même avec cette implémentation simple de <picture>
, nous avons couvert les bases, en ajustant une seule image selon les besoins pour fournir la version la plus convaincante de l'image pour chaque taille cible.
Cependant, avec quelques ajouts à ce code, il est possible de faire <picture>
un outil puissant pour automatiser la direction artistique sur l'ensemble de votre ensemble d'images, et pas seulement sur une seule photo isolée.
Dans les exemples ci-dessus, le recadrage était simple car le contenu significatif était au milieu (ce qui est la valeur par défaut pour fit=crop
).
Cependant, si la partie la plus pertinente de l'image n'est pas centrée, vous pouvez toujours utiliser les modes crop
d'imgix pour ajuster par programmation le début du recadrage, sans avoir à produire manuellement des versions pré-recadrées pour différents rapports d'aspect.
imgix propose deux modes de recadrage en fonction du contenu de l'image : crop=faces
et crop=entropy
. Ils fonctionnent de la même manière en évaluant l'image et en détectant les visages ou les zones de contraste élevé, puis en recadrant avec ceux du centre.
Vous trouverez plus de détails sur l'utilisation de ces modes dans nos guides sur la création d'avatars et le recadrage des points d'intérêt .
Voyons comment l'utilisation <picture>
et des fonctionnalités clés d'imgix telles que les superpositions de texte et les filigranes peut créer un ensemble d'images entièrement personnalisées qui recadrent et changent pour s'adapter à l'écran de n'importe quel appareil.
Chaque version de ces images est créée à la volée à partir d'un fichier d'image d'origine en réponse à la taille de la fenêtre d'affichage et mise en cache, ce qui minimise considérablement le stockage des images et tout impact sur les performances que <picture>
pourrait normalement causer.
Afficher des exemples de recadrage de visages/d'entropie dans le CodePen
Voir l' élément d'image du stylo et la direction artistique avec imgix par imgix ( @imgix ) sur CodePen .
Dans l'exemple CodePen, les images s'ajustent à la fenêtre d'affichage en taille et en rapport d'aspect, et le style de recadrage varie en fonction de ce qui est nécessaire à ces dimensions pour garder le président Obama centré.
Selon la variation de l'image, cela se fait avec crop=faces
, crop=entropy
, l'alignement des cultures ( crop=top
, etc.) et parfois rect
pour zoomer sur une partie de l'image à des tailles plus petites.
Le filigrane du logo et le crédit photo sont également ajustés en fonction de la taille et du rembourrage pour s'adapter aux changements de fenêtre d'affichage et changer de position pour éviter le chevauchement du sujet.
Les superpositions de texte, les mélanges ou les filigranes que vous ajoutez à vos images peuvent être mis à l'échelle et ajustés avec l'image. Voici un exemple qui tire parti de <picture>
pour diriger l'art de manière encore plus spectaculaire.
Afficher des exemples de filigrane/mélange dans le CodePen
Si vous souhaitez prendre en charge plusieurs résolutions de pixels dans <picture>
, vous pouvez le faire en ajoutant des variations DPR à chaque srcset
. Par exemple, si nous voulions prendre en charge un périphérique à plus haute densité pour notre exemple d'origine, le code ressemblerait à ceci :
<picture> <source srcset="https://assets.imgix.net/blog/unsplash-kiss.jpg?w=1280&dpr=1 1x, https://assets.imgix.net/blog/unsplash-kiss.jpg?w=1280&dpr=2 2x, https://assets.imgix.net/blog/unsplash-kiss.jpg?w=1280&dpr=3 3x, https://assets.imgix.net/blog/unsplash-kiss.jpg?w=1280&dpr=4 4x, https://assets.imgix.net/blog/unsplash-kiss.jpg?w=1280&dpr=5 5x" media="(min-width: 1280px)" > <source srcset="https://assets.imgix.net/blog/unsplash-kiss.jpg?w=768&h=1024&fit=crop&dpr=1 1x, https://assets.imgix.net/blog/unsplash-kiss.jpg?w=768&h=1024&fit=crop&dpr=2 2x, https://assets.imgix.net/blog/unsplash-kiss.jpg?w=768&h=1024&fit=crop&dpr=3 3x, https://assets.imgix.net/blog/unsplash-kiss.jpg?w=768&h=1024&fit=crop&dpr=4 4x, https://assets.imgix.net/blog/unsplash-kiss.jpg?w=768&h=1024&fit=crop&dpr=5 5x" media="(min-width: 768px)" > <source srcset="https://assets.imgix.net/blog/unsplash-kiss.jpg?w=568&h=320&fit=crop&dpr=1 1x, https://assets.imgix.net/blog/unsplash-kiss.jpg?w=568&h=320&fit=crop&dpr=2 2x, https://assets.imgix.net/blog/unsplash-kiss.jpg?w=568&h=320&fit=crop&dpr=3 3x, https://assets.imgix.net/blog/unsplash-kiss.jpg?w=568&h=320&fit=crop&dpr=4 4x, https://assets.imgix.net/blog/unsplash-kiss.jpg?w=568&h=320&fit=crop&dpr=5 5x" media="(min-width: 480px)" > <img srcset="https://assets.imgix.net/blog/unsplash-kiss.jpg?w=320&h=568&fit=crop&dpr=1 1x, https://assets.imgix.net/blog/unsplash-kiss.jpg?w=320&h=568&fit=crop&dpr=2 2x, https://assets.imgix.net/blog/unsplash-kiss.jpg?w=320&h=568&fit=crop&dpr=3 3x, https://assets.imgix.net/blog/unsplash-kiss.jpg?w=320&h=568&fit=crop&dpr=4 4x, https://assets.imgix.net/blog/unsplash-kiss.jpg?w=320&h=568&fit=crop&dpr=5 5x"> </picture>
Notez à nouveau qu'il n'est pas nécessaire de créer de nouvelles versions de l'image. Créez simplement une copie de la source, ajoutez un paramètre dpr
à l'URL et étiquetez chacune avec le descripteur de densité de pixels approprié ( 1x
, 2x
, etc.).
Votre image originale est tout ce dont vous avez besoin pour créer des variations infinies au fur et à mesure que vos besoins et vos conceptions changent.
imgix est un allié puissant pour aborder la complexité de l'imagerie réactive dans des conceptions en évolution rapide. Avec de simples modifications de paramètres, vous pouvez traiter de nouveaux conteneurs de conception, appareils et résolutions d'appareils par programmation au lieu de retraiter l'intégralité de votre catalogue d'images.
Nous soutenons également les approches avant-gardistes telles que Client Hints qui tentent de simplifier la conception et la mise en œuvre réactives.
Créez un compte gratuit dès aujourd'hui pour profiter d'imgix.
crop
| Mode de recadragedpr
| Ratio de pixels de l'appareilfit
| Redimensionner le mode d'ajustementrect
| Région du rectangle source
<picture>
avec les paramètres de recadrage du point focal d'imgix pour rendre vos images attrayantes, quelle que soit leur taille.