Images à la une & médias : héros, cartes, et mise en page essai photo
Choisir le bon type de source d'image, contrôler où elle apparaît, écrire un bon alt, et désactiver la TOC pour un essai photo léger en texte.
Cet article est un petit essai photo qui illustre les fonctionnalités d’image du thème de bout en bout. Notez ce que cette page fait que les autres ne font pas :
- Le hero est un asset local situé dans
src/assets/images/posts/featured-images-and-media/coastline.jpg, passé par le pipeline d’image d’Astro (srcsetresponsive, WebP). toc: false— aucune table des matières à droite. Les essais photo se lisent mieux sans.showFeaturedImage: trueest défini explicitement, même si c’est le défaut du site. Les auteurs peuvent désactiver par article.
Vous avez trois options de stockage. Les images hero et les vignettes
de carte passent par un petit composant SmartImage qui choisit
automatiquement la bonne stratégie :
Déposez le fichier dans src/assets/images/posts/<post-identifier>/ et référencez-le depuis le
frontmatter par un chemin relatif au fichier markdown :
# src/content/posts/fr/balade-cotiere.md → src/assets/images/posts/balade-cotiere/coastline.jpgheroImage: ../../../assets/images/posts/balade-cotiere/coastline.jpgheroImageAlt: Vagues sur une côte rocheuse en longue expositionLe schéma de la collection utilise le helper image() d’Astro : le
fichier est validé, ses dimensions sont déduites au build, et
l’image traverse l’optimiseur (formats modernes + srcset
responsive). C’est l’option à privilégier par défaut.
En MDX vous pouvez aussi importer des assets explicitement et les
passer à <Image> pour un usage en ligne :
import { Image } from 'astro:assets';import coastline from '../../../assets/images/posts/featured-images-and-media/coastline.jpg';
<Image src={coastline} alt="Une côte au crépuscule" widths={[400, 800, 1600]} />Déposez le fichier dans public/ et référencez-le par chemin absolu :
heroImage: /images/coastline.jpgheroImageAlt: Vagues sur une côte rocheuse en longue expositionPour : zéro cérémonial. Contre : pas d’optimisation automatique
— Astro ne traite délibérément rien dans public/. Le navigateur
reçoit le fichier tel quel. À utiliser pour des assets dont l’URL
doit rester stable (favicons, OG par défaut, manifeste web).
Les URL distantes sont des citoyennes de première classe. Le hero
et les composants de carte les passent au service d’image d’Astro
qui télécharge la source au build, la convertit en WebP, et émet un
srcset responsive :
heroImage: ../../../assets/images/posts/typography-and-markdown/light-through-window.pngheroImageAlt: Lumière douce du jour sur un bureau en boisL’hôte doit être autorisé dans image.remotePatterns de
astro.config.mjs. Les valeurs par défaut
couvrent Unsplash, GitHub user content, jsDelivr, Cloudinary et
Cloudflare Images ; ajoutez votre propre CDN si vous en utilisez
un. Tout hôte hors liste fait échouer le build avec un message clair.
Le hero apparaît à deux endroits :
- Comme vignette de carte (page d’accueil, listings, archives, pages de tag et de catégorie).
- Comme grand hero sur la page de l’article.
Les deux sont contrôlés par :
SITE.showFeaturedImagesdanssrc/config.ts— défaut global.SITE.dynamicPostCardHeightdanssrc/config.ts— contrôle si les cartes de listing avec vignette gardent une hauteur desktop fixe (false) ou peuvent s’étendre pour des extraits plus longs (true).showFeaturedImagepar article — override le défaut global.heroImagepar article — fournit la source réelle.
Si heroImage est absent, aucun hero n’est rendu, drapeaux ou non.
Si heroImage est présent mais showFeaturedImage: false, la page
de l’article est sans image — mais la carte sur les listings peut
toujours utiliser le hero, selon votre personnalisation de mise en
page.
Si vos listings paraissent trop rigides (ou trop irréguliers), c’est le réglage global à ajuster sans modifier le markup des composants.
Les images Markdown en ligne occupent toute la largeur de la prose :
Une figure légendée avec <figcaption> :

Images côte à côte ? Mettez-les dans un <div> HTML avec des classes
Tailwind (c’est du MDX, après tout) :


Le thème inclut un composant <VideoEmbed> pour des intégrations
vidéo responsives et respectueuses de la vie privée. Il affiche une
iframe en 16:9 avec des coins arrondis et une légende optionnelle —
cohérent avec la mise en forme des images.
Utilisez les props raccourcies platform + id — le composant
construit l’URL d’intégration automatiquement (en utilisant
youtube-nocookie.com pour la confidentialité) :
Même principe :
Pour tout autre fournisseur, passez l’URL complète via src :
<VideoEmbed src="https://www.youtube-nocookie.com/embed/dQw4w9WgXcQ" title="URL d'intégration personnalisée" caption="Texte de légende optionnel"/>heroImageAlt est techniquement optionnel. Ne le traitez pas ainsi.
- Images décoratives (un bandeau coloré en haut d’un article) :
alt vide —
heroImageAlt: "". - Images de contenu (capture d’écran, photo, graphique) : décrivez ce que l’image transmet, pas le fichier.
- Ne commencez pas par « Image de… » — les lecteurs d’écran l’annoncent déjà comme image.
Le thème utilise heroImageAlt pour le hero et la vignette de
carte, donc un alt bien écrit sert les deux contextes.
- Les images hero et de carte passent par
SmartImageet reçoivent automatiquement unsrcsetresponsive en WebP — aucun travail supplémentaire requis. - Les images en ligne en
<img>brut ne reçoiventloading="lazy"que si vous le précisez ; la syntaxe Markdown![]()non plus. Préférez<img loading="lazy">(ou<Image>d’Astro) pour les images en bas de page. - Pour les images en ligne que vous contrôlez, utilisez
<Image>deastro:assetsavec un fichier importé depuissrc/assets/images/posts/<post-identifier>/...afin d’obtenir la même sortie multi-formats et responsive que le hero. - Pour les hero locaux, préférez
src/assets/images/posts/<post-identifier>/àpublic/quand c’est possible — seul le premier passe par l’optimiseur.
Les essais photo se lisent mieux sans distraction. C’est pourquoi cet article :
- Masque la TOC (
toc: false). - Utilise un grand hero plus quelques figures en ligne.
- Reste en MDX pour pouvoir glisser des grilles côte à côte sans quitter Markdown.
Bonnes photos.