接下来,将所有其他脚本移动到结束
标记之前的非渲染阻塞方式:
最后,在 js/index.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);});
通过实施此解决方案,您可以防止白色闪烁并确保页面重新加载时浅色和深色模式之间的无缝过渡。
","image":"http://www.luping.net/uploads/20241114/173159245067360102b4960.jpg","datePublished":"2024-11-14T22:37:00+08:00","dateModified":"2024-11-14T22:37:00+08:00","author":{"@type":"Person","name":"luping.net","url":"https://www.luping.net/articlelist/0_1.html"}}
深色模式重新加载时出现白色闪烁问题
实现利用本地存储进行持久化的深色模式功能时,面临的一个常见问题是页面重新加载时白色背景闪烁。出现这种情况是因为 DOM 解析器通常会在应用深色模式样式之前渲染页面。
解决方案:阻止页面渲染
要解决此问题,我们可以阻止页面使用放置在文档
中的小脚本进行渲染。此脚本将在 元素上设置 data-theme 属性,然后继续呈现页面。将以下脚本放在
内任何其他标记之前:
接下来,将所有其他脚本移动到结束 标记之前的非渲染阻塞方式:
最后,在 js/index.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);
});
通过实施此解决方案,您可以防止白色闪烁并确保页面重新加载时浅色和深色模式之间的无缝过渡。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3