先看下效果图吧:
夜晚模式样式:
白天正常样式:
- 先讲一下具体的思路和实现方法吧,我这个功能是项目已经上线一年后才提出要加上去的,由于页面比较多,重构wxss写自定义颜色再去修改太费力了,就选了简单粗暴的方式,直接另外写一套夜间模式的单独样式,在夜间模式的时候把白天模式的样式给覆盖掉,用户在点击模式切换的时候,直接设置一个全局变量‘isDark’存入到缓存中,然后在去到每一个tab页面的时候,在onLoad方法里面读取一下当前的’isDark’值,组件的话可以直接通过properties传产同样可以实现,或者在attached生命周期函数里面读取缓存获取,判断当前是否为夜间模式,如果是就显示夜间模式样式,如果不是就正常显示就ok,这里皮肤设置其实修改的全是文字和背景颜色,其实也没多少代码量,具体实现方式要你们自己去琢磨,稍微有点功底的应该就看得懂,简单贴一段代码吧;
wxml部分,直接在我们的原本代码盒子外围多添加一个view标签,根据isDark的值来动态控制是否需要显示夜间模式样式,如果是夜间模式就是加上dark样式类标签,不是则什么都不做
我是内容... 我是底部...
wxss部分,这里也很简单,只需要把当前页面对应的夜间模式css文件引入即可,可以自己建一个文件夹SKIN来存放皮肤wxss文件,新建一个page-dark.wxss,用于编写夜间模式样式,然后在需要配置夜间模式的页面引入dark.wxss文件,记得放在最后,这样不用加!important来强行覆盖,直接重叠覆盖白天原有的样式
//正常页面显示样式index.wxss文件代码,就是白天样式
.box {
background: #ffffff;
color: #000000;
}
.footer {
background: #F2F2F2;
color: #7C7C7C;
}
@import '../../assets/skin/dark.wxss';
-------------------------------------------------------;
//下面是我们自己加的夜间样式dark.wxss代码
.dark {
background: #000000;
color: #ffffff;
}
.dark .box {
background: #222222;
color: #ffffff;
}
.dark .footer {
background: #7C7C7C;
color: #ffffff;
}
简单易懂,已点赞
楼主看到可以改一下这个鸭~