Le WordPress d'aujourd'hui, décodé pour les développeurs

SEO & GEO

aspect-ratio en CSS pour prévenir un décalage de mise en page sans JavaScript

Réserver l'espace d'une image avant son chargement évitait jusqu'ici un script de mesure. La propriété CSS aspect-ratio règle ce problème en une seule ligne native.

Par WordPress Développement • 14 novembre 2021 • 4 min de lecture • Aucun commentaire
aspect-ratio en CSS pour prévenir un décalage de mise en page sans JavaScript

« La page se décale au chargement, l’image pousse le texte vers le bas. » Ce symptôme classique, mesuré par l’indicateur Cumulative Layout Shift (CLS) des Core Web Vitals, provient presque toujours de la même cause : le navigateur ne connaît pas les dimensions de l’image avant qu’elle ne finisse de se charger, et doit donc réajuster la mise en page une fois l’information disponible.

Pendant des années, la solution consistait à calculer un ratio en JavaScript ou à simuler l’espace réservé avec un padding-top exprimé en pourcentage, une astuce peu lisible. La propriété CSS aspect-ratio, aujourd’hui prise en charge par les principaux navigateurs, permet de réserver cet espace en une seule ligne native, sans script.

Le problème concret

Sur une page d’articles WordPress avec des images à la une de tailles variables, le code HTML généré ressemble typiquement à ceci, sans dimension fixe précisée :

<img src="/images/article-42.jpg" alt="Illustration de l'article" />

Sans largeur ni hauteur connues à l’avance, le navigateur affiche d’abord un espace de hauteur nulle, puis redimensionne brutalement la page une fois l’image téléchargée et ses dimensions réelles connues. Ce réajustement est précisément ce que mesure le CLS, et chaque décalage brusque pénalise ce score.

La solution avec aspect-ratio

L'essentiel à retenir : aspect-ratio réserve l'espace d'une image dès le premier rendu ; Elle remplace un calcul JavaScript ou un padding-top en pourcentage ; Elle réduit directement le Cumulative Layout Shift mesuré par Google

La propriété aspect-ratio permet de définir un ratio largeur/hauteur directement en CSS, indépendamment des dimensions réelles du fichier image :

img.image-a-la-une {
    width: 100%;
    aspect-ratio: 16 / 9;
    object-fit: cover;
}

Avec cette règle, le navigateur réserve immédiatement l’espace correspondant au ratio 16/9 dès qu’il connaît la largeur disponible, sans attendre le téléchargement de l’image. La propriété object-fit: cover garantit que l’image remplit cet espace sans déformation, quitte à recadrer légèrement les bords.

Comparaison avec les anciennes méthodes

MéthodePrincipeLimite
padding-top en pourcentageRéserve un espace via un calcul indirect sur un conteneur positionnéCode peu lisible, nécessite un conteneur supplémentaire
Script JavaScript de mesureCalcule le ratio après lecture des dimensions naturelles de l’imageDépend du JavaScript, s’exécute après le premier rendu
aspect-ratio natifRéserve l’espace directement en CSS, avant tout chargementNécessite de connaître ou choisir un ratio cohérent

Combiner aspect-ratio avec width et height HTML

Depuis que les navigateurs calculent eux-mêmes un ratio par défaut à partir des attributs width et height posés directement dans la balise <img>, une question revient souvent : faut-il encore utiliser aspect-ratio en CSS si ces attributs sont déjà renseignés ? La réponse dépend du contexte : les attributs HTML fixent un ratio unique, quelle que soit la largeur réelle d’affichage, alors que la propriété CSS permet d’imposer un ratio différent selon la mise en page responsive, par exemple un format plus carré sur mobile et plus large sur ordinateur.

@media (max-width: 600px) {
    img.image-a-la-une {
        aspect-ratio: 1 / 1;
    }
}

Combiner les deux approches — attributs HTML pour un ratio de repli universel, propriété CSS pour l’ajustement responsive — reste la méthode la plus robuste sur un thème qui gère plusieurs formats d’affichage.

Adapter le ratio selon le contexte

  • aspect-ratio: 16 / 9 pour les images à la une en pleine largeur
  • aspect-ratio: 1 / 1 pour des vignettes carrées d’archive ou de grille
  • aspect-ratio: 4 / 3 pour des illustrations plus classiques de contenu éditorial

Le choix du ratio doit rester cohérent avec le recadrage réellement appliqué aux images en amont, sous peine de perdre des éléments importants du cadrage avec object-fit: cover.

Une habitude prise sur nos projets récents : définir aspect-ratio directement dans la feuille de styles du thème, pour chaque emplacement d’image récurrent, plutôt que de le recalculer image par image.

En résumé

La propriété aspect-ratio remplace en une seule ligne des méthodes plus lourdes qui nécessitaient soit un calcul JavaScript exécuté après le premier rendu, soit un conteneur supplémentaire en CSS. Sur un thème WordPress qui affiche de nombreuses images à la une, cette propriété réduit directement le score de Cumulative Layout Shift, sans dépendance à un script externe.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Partager :

À propos de l'auteur

WordPress Développement

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi