Pourquoi votre page se décale
Presque tous les problèmes de CLS proviennent de l'une de ces trois sources :
- Des images et iframes sans dimensions réservées. Si le navigateur ne connaît pas la taille d'une image avant son chargement, il affiche la boîte avec une hauteur nulle, puis fait basculer tout ce qui se trouve en dessous à l'instant où l'image arrive.
- Du contenu injecté au-dessus du contenu existant. Les publicités, les bandeaux promotionnels et les bannières de cookies insérés dans le DOM après le rendu initial repoussent tout ce qui se trouve en dessous.
- Des polices web qui reformatent le texte lors du swap. Une police de secours s'affiche d'abord, puis la vraie police se charge et remplace celle-ci avec une largeur/hauteur différente, reformatant chaque ligne qu'elle touche.
Comment identifier ce qui se décale
Les contrôles de performance de Scanverra notent le CLS directement à partir d'une véritable exécution Lighthouse sur votre URL en direct, en utilisant la même métrique cumulative-layout-shift sur laquelle reposent les données de terrain de Google. Lorsqu'il est élevé, Scanverra le signale comme un problème distinct - pas seulement un chiffre, mais un problème nommé - car une mise en page instable casse aussi autre chose : un agent IA ou un outil automatisé essayant de cliquer sur un bouton qui vient de se déplacer visera le mauvais élément.
Pour trouver l'élément précis responsable, le panneau Performance de Chrome DevTools enregistre des entrées « Layout Shift » avec le nœud exact qui a bougé et de combien - ouvrez-le, enregistrez un chargement de page, et repérez les marqueurs rouges de décalage de mise en page dans la piste Experience.
Comment le corriger
1. Réservez de l'espace avec des dimensions explicites
Chaque image, vidéo et iframe devrait déclarer sa largeur et sa hauteur (ou utiliser la propriété CSS moderne aspect-ratio) afin que le navigateur puisse allouer la bonne boîte avant l'arrivée de la ressource :
1<img
2 src="/product.webp"
3 alt="Wireless keyboard, top view"
4 width={640}
5 height={480}
6 loading="lazy"
7/>Lorsque la taille exacte en pixels varie (un embed responsive, par exemple), utilisez plutôt le CSS :
1.video-embed {
2 width: 100%;
3 aspect-ratio: 16 / 9;
4}2. Donnez au contenu injecté dynamiquement un emplacement de hauteur fixe
Si une bannière de cookies, un emplacement publicitaire ou un bandeau promotionnel doit être inséré après le rendu initial, donnez à son conteneur un min-height réservé dès le départ plutôt que de le laisser repousser le contenu à son arrivée - même une boîte de remplacement vide évite le décalage.
3. Faites correspondre les métriques de votre police de secours à la police réelle
Utilisez font-display: swap associé à une police de secours dont la hauteur x et la largeur moyenne des caractères sont proches de votre police réelle (des outils comme Fontaine ou un size-adjust manuel dans un bloc @font-face peuvent les faire correspondre), afin que le remplacement ne reformate pas visiblement la ligne.
4. N'insérez jamais de contenu au-dessus de la position de défilement actuelle de l'utilisateur
Si du nouveau contenu doit apparaître - une bannière « nouveaux articles disponibles », par exemple - insérez-le sous la ligne de flottaison ou exigez une action de l'utilisateur pour le révéler, plutôt que de l'injecter au-dessus de ce qui est déjà visible.
Comment Scanverra détecte les problèmes de CLS
Scanverra exécute une véritable passe Lighthouse sur votre URL en direct et lit la valeur réelle cumulative-layout-shift qui en résulte - la même exécution utilisée pour le LCP et le TTFB - et signale un problème dédié lorsqu'elle est élevée, avec une description liée à l'importance spécifique de l'instabilité de la mise en page pour tout ce qui (humain ou automatisé) tente d'interagir avec votre page.