Get to know MDN better
Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis mars 2016.
La propriété sizes de l'interface HTMLImageElement permet de définir la largeur de présentation de l'image pour chacune d'une liste de requêtes média, ou auto pour les images chargées paresseusement afin de permettre au navigateur de sélectionner automatiquement une image à afficher en fonction de la taille de présentation de l'élément. Cela permet au navigateur de choisir entre différentes images définies dans l'élément srcset pour correspondre à différentes conditions média — même des images avec des orientations ou des rapports d'aspect différents.
La propriété sizes reflète l'attribut de contenu sizes de l'élément <img>. Elle ne peut être présente que lorsque srcset utilise des descripteurs de largeur.
Une chaîne de caractères qui peut être le mot-clé auto (éventuellement suivi de n'importe quel nombre de tailles sources), ou une ou plusieurs tailles sources.
Voir l'attribut sizes dans la référence HTML de l'élément <img> pour plus d'informations.
Cet exemple montre comment le navigateur utilise l'attribut sizes pour sélectionner une image à partir de srcset en fonction de la largeur de rendu de l'image à la largeur actuelle de la fenêtre. Il permet également de voir l'effet du redimensionnement de la fenêtre du navigateur sur l'image chargée.
Pour démontrer l'effet du chargement paresseux, les images doivent être initialement cachées du zone d'affichage visuelle, puis défilées dans la vue. Cela est réalisé en ayant un conteneur <div> externe scroll-container qui contient les conteneurs spacer et demo-wrap. L'image est contenue à l'intérieur du conteneur demo-wrap, qui est repoussé hors de la zone d'affichage visuelle par la hauteur définie sur le conteneur spacer.
L'élément <img> a les attributs suivants :
Le CSS et le JavaScript ne sont pas affichés (si vous souhaitez les examiner, sélectionnez « Exécuter » pour voir l'exemple complet dans le playground interactif).
L'exemple est mieux voir dans sa propre fenêtre, afin que vous puissiez ajuster pleinement les tailles, et l'exemple n'est pas limité par son cadre contenant.
Faites défiler le cadre pour afficher l'image. L'étiquette en bas de l'image montre la largeur actuelle du conteneur.
Redimensionnez la fenêtre — vous devriez voir l'image changer aux points de rupture des media queries de l'attribut sizes.
Notez que l'image sélectionnée peut être plus grande que la largeur du conteneur ne le suggère. De nombreux écrans, sinon la plupart, ont un rapport de pixels de l'appareil (DPR) supérieur à un. Pour afficher une image nette à la densité de pixels physique de l'écran, un navigateur multiplie l'indice sizes correspondant par le DPR avant de sélectionner à partir de srcset. Par exemple, sur un écran 2× avec une fenêtre d'affichage d'environ 500px, l'indice correspondant est 600px, mais le navigateur recherche une image d'environ 1200px et sélectionne 1200.png comme taille disponible la plus proche, puis la redimensionne pour s'adapter à l'espace disponible.
Note : En conséquence, certaines des images dans le srcset peuvent ne pas être accessibles sur un affichage particulier à certains points de rupture, et cela peut dépendre du navigateur.
Le journal fournit des informations lorsque l'évènement load se déclenche pour l'image et lorsqu'elle intersecte la fenêtre d'affichage visible. Notez que l'image est chargée de manière paresseuse, donc l'évènement load devrait se déclencher juste avant que l'image n'entre dans la fenêtre d'affichage.
Cet exemple montre comment la définition de la valeur sizes sur auto affecte la sélection de l'image à charger à partir de srcset lorsque les éléments <img> sont chargés de manière paresseuse. Il permet également de voir l'effet du changement de taille d'un conteneur sur l'image chargée.
Le HTML est similaire à celui de l'exemple précédent, sauf qu'il définit trois éléments <img> presque identiques, chacun avec un srcset indiquant 3 images de 600px, 400px et 200px de large, et avec une valeur sizes de auto. Ces éléments sont contraints dans des conteneurs dimensionnés pour sélectionner les différentes images.
Voici les classes CSS qui définissent la taille des différents conteneurs d'images.
Le reste du CSS et le JavaScript qui alimentent le curseur, la journalisation, etc., ne sont pas affichés (si vous souhaitez les examiner, sélectionnez « Exécuter » pour voir l'exemple complet dans le terrain de jeu interactif).
Faites défiler le cadre pour afficher les trois images. Le navigateur devrait avoir sélectionné une image différente pour chacune en fonction des différentes contraintes de largeur. Vous pouvez utiliser le curseur pour modifier la taille du conteneur de la première image. Notez que le navigateur peut ou non sélectionner une nouvelle image à afficher lorsque la taille du conteneur change, car les implémentations ne sont pas tenues de réagir aux changements dynamiques.
Le journal fournit des informations lorsque l'évènement load se déclenche pour chaque image, et lorsque une image intersecte la zone d'affichage visible. Notez que les images sont chargées de manière paresseuse, donc l'évènement load devrait se déclencher juste avant que l'image n'entre dans la zone d'affichage. Notez également que l'évènement load se déclenche également lorsque vous modifiez la taille du conteneur pour la première image, indiquant quand le navigateur a recalculé la mise en page (pas nécessairement qu'une nouvelle image a été chargée).
Dans cet exemple, une mise en page de type blog est créée, affichant du texte et une image pour laquelle trois points de taille sont définis, selon la largeur de la fenêtre. Trois versions de l'image sont également disponibles, avec leurs largeurs indiquées. Le navigateur utilise toutes ces informations et sélectionne l'image et la largeur qui correspondent le mieux aux valeurs définies.
La façon dont les images sont utilisées peut dépendre du navigateur et de la densité de pixels de l'écran de l'utilisateur·ice.
Des boutons en bas de l'exemple permettent de modifier légèrement la propriété sizes, en alternant la plus grande des trois largeurs de l'image entre 40em et 50em.
Le code JavaScript gère les deux boutons qui permettent d'alterner la troisième option de largeur entre 40em et 50em ; cela se fait en gérant l'évènement click et en utilisant la méthode JavaScript replace() pour remplacer la partie concernée de la chaîne sizes.
La page est mieux affichée dans sa propre fenêtre, afin de pouvoir ajuster pleinement les tailles, et l'exemple n'est pas contraint par son cadre contenant.
| HTML # dom-img-sizes |
Activez JavaScript pour afficher ce tableau de compatibilité des navigateurs.
Cette page a été modifiée le 13 mai 2026 par les contributeur·ice·s du MDN.
Votre modèle pour un internet meilleur.
Visitez la société mère à but non lucratif de Mozilla Corporation, la Fondation Mozilla.
Certaines parties de ce contenu sont protégées par le droit d'auteur ©1998—2026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.