如何在具有暗/亮模式的页面之间进行平滑过渡

时间:2019-05-01 11:06:50

标签: javascript html css

我设计了一个带有明/暗模式选项的网页,当我切换到另一页时,它会闪烁,因为主体的背景色已设置。

想象一下,您从浅色开始,然后将其更改为深色,然后转到下一个网页,那么,您就遇到了问题。即使您将页面的主题颜色保存在LocalStorage上,它也会在进行转换时闪烁,因为必须在所有内容加载后执行javascript,否则,将崩溃并发送错误消息,提示您body元素不存在。

我发现闪烁的原因是它设置了CSS告诉它使用的颜色(即使您未设置任何背景颜色,它也会默认使用白色,因此问题不会改变),然后在所有内容加载完毕后执行javascript。为了解决这个问题,我只使用javascript修改了CSS,而没有使用window.onLoad,那样我修改了CSS,它立即更改并且没有闪烁。

编辑:错字

Edit2:如果您认为可以在CSS中设置背景颜色,那通常是您应该做的,并且应该不会出现任何问题,但是当您使用明暗模式创建网络时,无法执行此操作,因为它会闪烁。如果您将背景颜色设置为#424242,则在您使用灯光模式时(它会在javascript中设置为F2F2F2背景颜色),它会以#424242颜色闪烁;而当您将背景颜色设置为#F2F2F2时,它将闪烁。使用深色模式(在javascript中设置的#424242背景颜色)。这就是为什么我需要对其进行动态更改。

1 个答案:

答案 0 :(得分:0)

这是代码。

var myStyle = document.createElement('style');
document.head.appendChild(myStyle);
var mySheet = myStyle.sheet;
//You can use a conditional "if" if you want to check the
//localStorage and change the theme dynamically
mySheet.insertRule("body{background-color:#424242}", 0);

PS:向此人大喊:https://www.youtube.com/watch?v=ChwQ95HQbnI