我正在尝试向我的 Jekyll 站点添加一个简单的明暗模式切换。
我现在设置它的方式是,主体有一个dark
类,该类在切换时切换到一个类,并且每当用户进入新页面时,light
主题都会保留并加载。localStorage
SCSS 仅具有选择器,用于.dark
显示.light
相应的配色方案。
这种方法的问题是我的默认主题是dark
,所以如果主题设置为 ,那么当我加载新页面时,当类从 切换到时,light
会有一个非常清晰的 0.2 秒闪烁。dark
light
我尝试通过将 body 设置visibilty
为hidden
然后visible
在切换后重新设置来解决问题,但不幸的是,这种方法引入了另一个令人讨厌的 flash/lag,并且没有好的方法可以阻止它在每次页面加载时闪烁。
我想到的一些潜在解决方案,但不知道它们是否可能或如何实施它们是:
让Jekyll 以某种方式读取
localStorage
并基于它更改呈现的 HTML 的类(可能是最好的解决方案,但也可能是不可能的)Jekyll 不知何故从 SCSS 生成了两个单独的样式表并使用 JS 选择正确的一个
感谢您对如何做这些事情或潜在的替代解决方案的任何见解,谢谢!