网站白天or黑夜切换在重新加载时闪烁白色背景的解决思路

一般网站主题设置的白天or黑夜通过js来切换开关,并且通过cookie值来存储当前是白天or黑夜,但是如果网站访问慢的时候,会导致黑夜的时候,网页还没有读取到cookie值的内容,便已经加载了css里面的白色背景,然后读取cookie后再迅速切换到了黑色背景

此时便导致了出现闪烁白色背景的现象

于是通过下面的一篇文章思路尝试这样的解决,下面的文章提到(内部放置一个小的< script> 标签来阻止页面呈现文档的< head>)但是尝试多次,发现还是未能解决,但是白天or黑夜的设置确实已经通过js存储到了localStorage值里面,于是……

在head之前添加了

让data-theme来获取localStorage.theme的白天or黑夜值

然后在把主题里面的css白天和黑夜的背景颜色通过 :root 选择器来赋值,也就是背景颜色会以var(–bg-body)来设置背景色,但是此时var(–bg-body)是未知的颜色

因此加了这一段

[data-theme=“0”] {
–bg-body: #f6f8fb;
–bg-secondary: #fff;
}
[data-theme=“1”] {
–bg-body: #192039;
–bg-secondary: #1f2745;
}
当data-theme的为白天或者黑夜的时候,便开始给var(–bg-body)赋予了颜色值,从而在继续加载css样式的时候才会显示var(–bg-body)已经指定的颜色值,这样就没有了黑夜展示之前的闪烁白色背景了,因为黑夜模式下,白色背景是不存在

但是部分主题只是设置了毕竟明显大部分位置,比如背景,框架背景,头部背景,保证了这部分地方是解决了闪烁白色背景的问题,但是实际上其他的元素,区域还是会有白色的闪烁,只是可能极为短暂,容易忽视掉……

完整代码地址:https://www.dpaoz.com/1177

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Unity的白天黑夜切换可通过调整场景中的光照来实现。我们需要创建两个版本的场景:一个白天版本,一个黑夜版本。然后在Unity中使用Lighting模式来设置它们的光照。 当我们切换黑夜版本,需要关闭场景中的日光和天空盒,并启用场景中的夜光和夜空盒。在Unity编辑器中,我们可以通过右键单击Hierarchy中场景物体的“Lighting”选项并选择“Night”模式来完成这些设置。 我们还可以为夜间版本制作照明效果,可以使用点光源或聚光灯等不同类型的光源。我们可以通过Unity的灯光设置修改灯光的颜色、强度和范围等属性来实现不同的照明效果。 当我们编写脚本控制到白天黑夜切换,我们只需使用LoadScene函数对应的场景即可。我们可以使用Unity的协程函数实现渐变的效果,以便我们可以在场景切换过程中提供更平滑的体验。 总而言之,Unity白天黑夜切换是通过灯光以及场景元素的设置来实现的。我们需要创建两个版本的场景,并使用Lighting模式来设置它们的光照。在切换,我们可以使用LoadScene函数来切换不同的场景,并使用协程函数来实现平滑的渐变效果。 ### 回答2: 在Unity中实现白天黑夜切换需要以下步骤: 1. 创建两个不同的场景,一个是白天的场景,一个是黑夜的场景。 2. 在白天的场景和黑夜的场景中设置光照,白天场景中增方向光源、半球光源等,黑夜场景中增点光源、聚光灯等,来模拟不同的光照效果。 3. 在场景管理器中创建一个空物体作为切换场景的主控物体,给主控物体添脚本。 4. 在脚本中,定义两个场景对象,以及两个场景中的光照对象(如方向光源、点光源等)。根据需要,还可以定义一些过渡效果。 5. 在脚本中添触发切换场景的事件,可以使用鼠标点击、键盘输入、间等作为触发条件。 6. 在触发事件中,使用SceneManager.LoadScene()方法来指定场景,并在场景切换前后分别进行一些操作,如将白天场景中的光照关掉、将黑夜场景中的光照打开等。 7. 在场景切换后,还可以在脚本中控制其他一些物体的行为,如将树木上的灯光打开等,来增场景的真实感。 通过上述步骤,就可以在Unity中实现白天黑夜切换,给游戏增更多的可玩性和趣味性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值