Un score CLS qui grimpe sans raison apparente, alors que rien n’a changé dans le contenu de la page ? La cause la plus fréquente sur un site Elementor tient en une ligne : un widget vidéo qui réserve zéro pixel de hauteur tant que le lecteur n’est pas chargé. Le navigateur affiche le reste de la page, puis insère brutalement le cadre vidéo une fois le script tiers exécuté, ce qui pousse tout le contenu situé en dessous.
Le Cumulative Layout Shift, l’un des trois indicateurs Core Web Vitals annoncés par Google en mai 2020, mesure précisément ce type de décalage visuel inattendu. Une vidéo YouTube ou Vimeo intégrée sans dimension réservée en est une cause classique et facile à corriger.
Pourquoi la vidéo décale la mise en page
Le widget vidéo natif d’Elementor insère un conteneur qui reste vide, ou de très faible hauteur, jusqu’à ce que l’iframe du lecteur externe soit chargée par le navigateur. Sur une connexion lente ou avec un script tiers différé, ce chargement peut prendre plusieurs centaines de millisecondes. Pendant ce laps de temps, le reste de la page s’affiche comme si la vidéo n’existait pas, avant que son insertion ne repousse brutalement tout ce qui suit.
La solution : réserver l’espace avec aspect-ratio

La propriété CSS aspect-ratio permet de fixer un ratio largeur / hauteur sur un élément, indépendamment de son contenu réel. Contrairement à l’ancienne astuce qui consistait à simuler un ratio avec un padding-top en pourcentage sur un conteneur positionné en absolu, aspect-ratio se lit directement et ne demande aucun calcul de pourcentage arrondi.
.widget-video-conteneur {
aspect-ratio: 16 / 9;
width: 100%;
overflow: hidden;
}
.widget-video-conteneur iframe {
width: 100%;
height: 100%;
}
Cette règle s’ajoute dans le panneau Custom CSS du widget concerné, ou dans une classe globale si plusieurs vidéos du site partagent le même format. Le conteneur réserve alors sa hauteur dès le premier rendu, avant même que l’iframe ne soit chargée : plus aucun décalage au moment de l’insertion du lecteur.
Variantes selon le format de vidéo
Toutes les vidéos ne partagent pas le même ratio. Un contenu vertical destiné à un usage mobile utilisera plutôt un ratio de 9 / 16, tandis qu’une vidéo de démonstration produit filmée en format carré se règle avec aspect-ratio: 1 / 1. L’important est de connaître à l’avance le ratio réel du fichier ou du flux intégré : un ratio mal choisi n’empêche pas le décalage de layout, il l’attenue mais laisse une bande vide ou une vidéo rognée.
- 16 / 9 pour la grande majorité des vidéos YouTube et Vimeo au format paysage ;
- 9 / 16 pour un contenu vertical de type story ou reel ;
- 4 / 3 pour d’anciennes captures ou des vidéos de formation filmées en plus petit format.
Ce que cette recette ne couvre pas
Réserver l’espace de la vidéo n’accélère pas son chargement : le script du lecteur tiers reste exécuté au même moment, avec le même poids réseau. Cette recette agit uniquement sur le CLS, pas sur le LCP ni sur le temps de chargement global de la page. Le lazy-load de la vidéo, qui consiste à ne charger le script du lecteur qu’au moment où l’utilisateur fait défiler la page jusqu’à elle, est un sujet distinct qui se traite avec d’autres réglages.
Sur chaque nouveau gabarit contenant une vidéo, on vérifie le ratio réel du contenu avant de figer la règle CSS : une vidéo carrée forcée dans un ratio 16 / 9 produit des bandes noires disgracieuses, même sans décalage de mise en page.
Vérifier le résultat
Le panneau Performance des outils de développement d’un navigateur Chromium affiche les décalages de mise en page détectés lors du chargement d’une page. Après application de la règle aspect-ratio, ce panneau ne doit plus signaler de décalage lié au conteneur vidéo. Un contrôle complémentaire consiste à recharger la page avec un débit réseau simulé lent, pour observer visuellement que l’espace reste stable pendant tout le chargement.
En résumé
Un simple bloc CSS suffit à éliminer une source fréquente de mauvais score CLS sur les gabarits Elementor contenant des vidéos intégrées. La propriété aspect-ratio remplace avantageusement les anciennes astuces de padding en pourcentage et se lit d’un coup d’œil dans le code, ce qui facilite la maintenance sur des projets où plusieurs formats de vidéo cohabitent.