Maison > interface Web > tutoriel CSS > le corps du texte

Comment empêcher le scintillement blanc lors du rechargement d'une page en mode sombre ?

Barbara Streisand
Libérer: 2024-11-01 07:05:31
original
744 Les gens l'ont consulté

How to Prevent White Flickering When Reloading a Dark Mode Page?

Problème de scintillement blanc avec le rechargement en mode sombre

Lors de la mise en œuvre d'une fonctionnalité de mode sombre qui exploite le stockage local pour la persistance, un problème courant rencontré est le scintillement d'un fond blanc lors du rechargement de la page. Cela se produit parce que l'analyseur DOM restitue généralement la page avant que les styles du mode sombre ne soient appliqués.

Solution : bloquer le rendu de la page

Pour résoudre ce problème, nous pouvons bloquer la page rendu à l'aide d'un petit script placé dans le de votre document. Ce script définira l'attribut data-theme sur le puis continuez le rendu de la page.

Placez le script suivant dans l'élément avant toute autre balise :

<code class="html"><script>
  // IMPORTANT: set this in <HEAD> top before any other tag.
  const setTheme = (theme) => {
    theme ??= localStorage.theme || "light";
    document.documentElement.dataset.theme = theme;
    localStorage.theme = theme;
  };
  setTheme();
</script></code>
Copier après la connexion

Ensuite, déplacez tous les autres scripts de manière à ne pas bloquer le rendu juste avant le tag:

<code class="html"><script src="js/index.js"></script>
<!-- other <script> tags here -->
<!-- Closing </body> </html> goes here --></code>
Copier après la connexion

Enfin, dans votre fichier js/index.js, utilisez le code suivant :

<code class="js">const elToggleTheme = document.querySelector('#dark-mode-button input[type="checkbox"]');

elToggleTheme.checked = localStorage.theme === "dark";

elToggleTheme.addEventListener("change", () => {
  const theme = elToggleTheme.checked ? "dark" : "light";
  setTheme(theme);
});</code>
Copier après la connexion

En implémentant cette solution, vous pouvez empêcher le scintillement blanc et assurer un transition transparente entre les modes clair et sombre lors du rechargement de la page.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!