Réduire son CLS à 0 en évitant les flash de design, notamment sur le thème Divi avec WP Rocket (ou tout autre thème)

Votre site Divi affiche-t-il du contenu sans style lors du chargement de la page ? Cela s’appelle FOUC pour Flash of unstyled content : votre site affiche brièvement le style par défaut du navigateur avant que vos feuilles de style ne soient chargées. Avec FOUC, votre contenu va changer et cela ne semble pas professionnel. Et avec le changement de contenu, vous risquez d’avoir des problèmes de CLS .

Pour solutionner ce problème de CLS et de FOUC, il va vous falloir ajouter un bout de code JavaScript en haut de votre code source, dans la balise <head> de votre site.

Vous n’utilisez pas le thème Divi ?
Pas de souci, le bout de code présenté ci-dessous fonctionne pour tous les thèmes WordPress. Il vous suffit de trouver l’option équivalente vous permettant d’ajouter un bout de JavaScript dans votre balise <head> ou d’installer le plugin Head, Footer & Post Injections pour y intégrer le bout de code partagé ci-dessous.

Si vous utilisez par exemple le thème Divi, allez dans Divi > Options du thème > Intégration > Ajouter du code au <head> de votre site.

Intéressé par Divi ? Retrouvez un review complète de ce thème premium ici :

Avis honnête, complet et détaillé sur le thème WordPress Divi

Sinon, cherchez la fonctionnalité équivalente dans les Theme Options de votre thème WordPress, ou utilisez un plugin comme Head, Footer & Post Injections pour ajouter un bout de code dans votre balise <head>.

Étape 1, ajoutez le bout de code JS suivant en haut de votre balise <head> :

<script type="text/javascript">
var elm=document.getElementsByTagName("html")[0];
elm.style.display="none";
document.addEventListener("DOMContentLoaded",function(event) {elm.style.display="block"; });
</script>

Source ↗︎

Voici à quoi cela ressemble si vous avez choisi d’utiliser le plugin d’insertion de code dans le Header & Footer :

Fonction flashing-unstyled content, fix CLS sur thème Divi

Inclut tout en haut de votre code source, ce script aura pour effet de masquer le rendu HTML tant que l’ensemble de la page n’aura pas été téléchargé. Autrement dit, dès que la page aura été entièrement télécharger, JavaScript déclenchera l’affichage du rendu de la balise <html>.

Ce code est du pur JavaScript, c’est-à-dire sans jQuery, donc compatible avec les plugins de performance comme WP Rocket, qui reporte l’exécution du JS.

Grâce à ce code, il est donc impossible que vos utilisateurs, Google ou PageSpeed Insights soient témoins d’un chargement progressif de votre webdesing.

Pour encore plus d’efficacité, pour les cas de CLS les plus élevés, vous pouvez par exemple définir un timer de 50 ms avant l’affichage du contenu chargé sans son entièreté, sans FOUC.

Pour cela, vous pouvez vous inspirer du code suivant :

<script type="text/javascript">
var elm=document.getElementsByTagName("html")[0];
elm.style.display="none";
document.addEventListener("DOMContentLoaded",function(event) { 
	setTimeout(function(){ elm.style.display="block"; }, 50);
});
</script>

Vous pouvez noter l’utilisation de la fonction  setTimeout(function(){ elm.style.display="block"; }, 50);  qui va demander au JavaScript d’attendre un très bref instant (50 ms) avant d’afficher la plage complète (sans CLS) aux utilisateurs.

Étape 2, ajoutez cette exclusion à votre plugin de performance :

Pour les utilisateurs de WP Rocket ou d’un plugin de performance avec « Report de l’Exécution du JavaScript », comme le fait WP Meteor par exemple, il est nécessaire de ne pas reporter l’exécution du bout de JS ajouté précédemment à notre site.

elm.style.display

Source ↗︎

Voici à quoi cela ressemble si vous êtes utilisateur de WP Rocket :

Exclusion FOUC CLS JS function dans WP Rocket

Grâce à cette mesure, vous devriez réduire considérablement le CLS de votre site. Mais si cela n’a pas résolu complètement votre problème de CLS, rassurez-vous…

Nous avons publié un billet totalement dédié à la résolution des problèmes de CLS que vous pouvez consulter en suivant le lien suivant :

Résoudre les problèmes de CLS sur PageSpeed Insights ou comment éviter les changements de mise en page importants →
Sommaire de ce billet
Besoin d'aide ?

Le site WordPress speed.easyhoster.net ➚ permet de tester le potentiel des solutions d'Hébergement Web EasyHoster.