Images
Astro fournit plusieurs façons d’utiliser les images sur votre site, qu’elles soient stockées localement dans votre projet, liées à distance ou stockées dans un CMS ou un CDN !
Dans les fichiers .astro
Section titled Dans les fichiers .astroAstro utilise les éléments HTML <img>
pour afficher les images, et tous les attributs HTML des images sont supportés.
L’attribut src
est requis, et son format va dépendre de l’endroit où les images sont situées :
Dans les fichiers Markdown
Section titled Dans les fichiers MarkdownVous pouvez utiliser la syntaxe Markdown standard ![]()
ou les balises HTML standard <img>
dans vos fichiers .md
pour les images situées dans votre dossier public/
, ou pour les images distantes sur un autre serveur.
Si vous ne pouvez pas garder vos images dans public/
, nous vous recommandons d’utiliser le format de fichier .mdx
, qui vous permet de combiner des composants importés avec une syntaxe semblable à celle de Markdown. Utilisez l’intégration MDX (EN) pour ajouter le support de MDX à Astro.
Dans les fichiers MDX
Section titled Dans les fichiers MDXVous pouvez utiliser la syntaxe Markdown standard ![]()
ou les balises JSX <img />
dans vos fichiers .mdx
pour afficher des images depuis votre dossier public/
ou depuis un serveur distant.
De plus, vous pouvez importer et utiliser des images situées dans votre répertoire de projet src/
, comme vous le feriez dans des composants Astro.
Dans les Composants de Framework UI
Section titled Dans les Composants de Framework UILorsque vous ajoutez des images dans un composant de Framework UI (ex : React, Svelte), utilisez la syntaxe des images appropriée pour ce Framework de composants particulier.
Où stocker les images
Section titled Où stocker les imagesVos images stockées dans src/
peuvent être utilisées par les composants (.astro
, .mdx
et autres Frameworks UI) mais pas dans les fichiers Markdown.
Nous recommandons de garder vos images dans public/
ou de les stocker à distance si vous devez utiliser des fichiers Markdown.
Importez-les depuis un chemin de fichier relatif ou un alias d’import dans n’importe quel fichier composant et utilisez ensuite l’import comme attribut src
de l’image.
public/
Section titled public/Vos images stockées dans public/
peuvent être utilisées par les composants (.astro
, .mdx
et autres Frameworks UI) mais aussi dans les fichiers Markdown.
Cependant les fichiers dans le répertoire /public
sont toujours utilisés ou copiés tels quels, sans aucun traitement. Si vous utilisez des images en dehors des fichiers Markdown, nous vous recommandons de les conserver dans le dossier src
lorsque cela est possible afin qu’Astro puisse les transformer, les optimiser et les regrouper.
L’attribut src
est relatif au dossier public. Dans Markdown, vous pouvez aussi utiliser la notation ![]()
.
Intégration des images Astro
Section titled Intégration des images AstroL’intégration officielle d’Astro des images fournit deux composants Astro différents pour rendre des images optimisées, <Image />
et <Picture />
. Celle-ci est supportée pour tous les sites statiques et pour certains hébergeurs de déploiement rendu côté serveur (EN).
Après avoir installé @astrojs/image
(EN), vous pouvez utiliser ces deux composants partout où vous pouvez utiliser des composants Astro : dans les fichiers .astro
et .mdx
.
<Image />
Section titled <Image />Le composant Astro <Image />
(EN) vous permet d’optimiser une seule image et de spécifier sa largeur, hauteur, et/ou son rapport rapport largeur/hauteur. Vous pouvez même convertir votre image dans un format de sortie particulier.
Ce composant est utile pour les images qui doivent conserver une taille constante sur tous les écrans ou pour contrôler étroitement la qualité d’une image (ex : les logos).
Pour les images responsive, ou pour une direction artistique, utilisez plutôt le composant <Picture />
.
Images distantes
Section titled Images distantes(attributs requis : src
(EN), alt
(EN), format
(EN), et dimensions)
Passez une URL complète à l’attribut src
du composant <Image />
et incluez une valeur pour alt
.
Le composant <Image />
ne peut pas déterminer le format de fichier d’origine d’une image distante, vous devez donc fournir un format
de sortie (ex : png, avif) pour convertir votre image distante.
Vous devez également fournir soit width
(EN) et height
(EN), soit l’une des dimensions et un aspectRatio
(EN) pour éviter les décalages de mise en page du contenu car le composant <Image />
ne connaît pas les dimensions d’une image distante.
Toutes les autres propriétés (EN) sont facultatives.
Images locales dans src/
Section titled Images locales dans src/(attributs requis : src
(EN), et alt
(EN))
Importez votre image dans le Frontmatter et passez-la directement à l’attribut src
du composant <Image />
.
alt
est requis, mais toutes les autres propriétés (EN) sont facultatives et, si elles ne sont pas fournies, prendront par défaut les propriétés d’origine du fichier image.
Images dans public/
Section titled Images dans public/(attributs requis : src
(EN), alt
(EN), format
(EN), et dimensions)
Passez un chemin relatif au répertoire public à l’attribut src
du composant <Image />
et incluez une valeur pour alt
.
Elle sera traitée comme une image distante, ce qui nécessite à la fois width
(EN) et height
(EN), ou une dimension et un attribut aspectRatio
(EN).
Une valeur pour l’attribut format
(ex : png, avif) est requise afin de transformer votre image.
Toutes les autres propriétés (EN) sont facultatives.
Votre image d’origine sera copiée sans traitement dans le dossier de Build, comme tous les fichiers situés dans public/
, et l’intégration d’image d’Astro renverra également des versions optimisées de l’image.
Exemples
Section titled Exemples<Picture />
Section titled <Picture /> Le composant Astro <Picture />
(EN) peut être utilisé pour fournir des images responsive sur votre site, y compris plusieurs tailles, formats et mises en page d’image.
Vous pouvez laisser le navigateur de l’utilisateur choisir les tailles d’image, les résolutions et les types de fichiers appropriés en fonction de facteurs tels que la taille d’écran et la bande passante. Ou alors, vous pouvez spécifier des règles que le navigateur doit suivre en fonction des media queries.
Ce composant est utile pour optimiser ce que votre utilisateur voit à différentes tailles d’écran, ou pour la direction artistique.
Images distantes
Section titled Images distantes(attributs requis : src
(EN), widths
(EN), sizes
(EN), alt
(EN), et aspectRatio
(EN))
Passez une URL complète à l’attribut src
du composant <Picture />
.
Une valeur pour aspectRatio
est également requise pour s’assurer que la hauteur correcte des images distantes puisse être calculée au moment du Build.
Vous devez fournir au composant des indications sur les largeurs d’image et les tailles d’écran, mais toutes les autres propriétés (EN) sont facultatives.
Bien que formats
(EN) ne soit pas requis, le format d’image d’origine des images distantes est inconnu et ne sera pas inclus par défaut. S’il n’est pas fourni, seuls webp
et avif
seront inclus.
Images locales
Section titled Images locales(attributs requis : src
(EN), widths
(EN), sizes
(EN), alt
(EN))
Importez votre image dans Frontmatter et passez-la directement à l’attribut src
du composant <Picture />
.
Vous devez fournir au composant des indications sur les largeurs d’image et les tailles d’écran, mais toutes les autres propriétés (EN) sont facultatives.
Par défaut, les formats
(EN) du composant <Picture />
incluront avif
et webp
en plus du format d’origine de l’image s’il n’est pas spécifié.
Images dans public/
Section titled Images dans public/(attributs requis : src
(EN), widths
(EN), sizes
(EN), alt
(EN), et aspectRatio
(EN))
Passez à l’attribut src
du composant un chemin relatif au dossier public et incluez une valeur pour alt
.
L’image sera traitée comme une image distante, donc une valeur pour aspectRatio
est également requise pour s’assurer que la hauteur puisse être correctement calculée au moment du Build.
Vous devez fournir au composant des indications sur les largeurs d’image et les tailles d’écran, mais toutes les autres propriétés (EN) sont facultatives.
Bien que formats
(EN) ne soit pas requis, le format d’origine des images dans le dossier public/
est inconnu et ne sera pas inclus par défaut. S’il n’est pas fourni, seuls “webp” et “avif” seront inclus.
Votre image d’origine sera copiée sans traitement dans le dossier de Build, comme tous les fichiers situés dans public/
, et l’intégration d’image d’Astro renverra également des versions optimisées de l’image.
Exemples
Section titled ExemplesUsing in MDX
Section titled Using in MDXDans les fichiers .mdx
, <Image />
et <Picture />
peuvent recevoir votre src
de l’image via des imports et exports.
Réglage des valeurs par défaut
Section titled Réglage des valeurs par défautActuellement, il n’existe aucun moyen de spécifier des valeurs par défaut pour tous les composants <Image />
et <Picture />
. Les attributs requis doivent être définis sur chaque composant.
Comme alternative, vous pouvez encapsuler ces composants dans un autre composant Astro pour les réutiliser. Par exemple, vous pouvez créer un composant pour les images de votre article de blog :
Utilisation de <img>
avec l’intégration d’image
Section titled Utilisation de <img> avec l’intégration d’imageL’intégration d’image officielle modifiera les importations d’images pour renvoyer un objet plutôt qu’une chaîne de caractères source. L’objet possède les propriétés suivantes, dérivées du fichier importé :
Si l’intégration d’image est installée, reportez-vous à la propriété src
de l’objet lors de l’utilisation de <img>
.
Une alternative consiste à ajouter ?url
à vos imports pour leur dire de renvoyer une chaîne de caractères source.
Utilisation des Images depuis un CMS ou un CDN
Section titled Utilisation des Images depuis un CMS ou un CDNLes CDN d’images fonctionnent avec Astro. Utilisez l’URL complète d’une image comme attribut src
dans une balise <img>
ou une notation Markdown.
Alternativement, si le CDN fournit un SDK Node.js, vous pouvez l’utiliser dans votre projet. Par exemple, le SDK de Cloudinary peut générer la balise <img>
avec le src
approprié pour vous.
Pour utiliser des images externes avec les composants <Image />
et <Picture />
de l’intégration d’image d’Astro, vous devez spécifier les valeurs de dimension et de format pour travailler avec des images distantes.
Texte Alternatif
Section titled Texte AlternatifTous les utilisateurs ne peuvent pas voir les images de la même manière, l’accessibilité est donc une préoccupation particulièrement importante lors de l’utilisation d’images. Utilisez l’attribut alt
pour fournir un texte alternatif descriptif pour les images.
Cet attribut est requis pour les composants <Image />
et <Picture />
de l’intégration d’image. Ces composants génèrent une erreur si aucun texte alternatif n’est fourni.
Si l’image est simplement décorative (i.e. elle ne contribue pas à la compréhension de la page), définissez alt=""
pour que les lecteurs d’écran sachent ignorer l’image.
Intégrations Communautaires
Section titled Intégrations CommunautairesEn plus de l’intégration @astrojs/image
(EN) officielle, il existe plusieurs intégrations d’images communautaires pour optimiser et travailler avec des images dans votre projet Astro.