微信小程序实现皮肤功能(夜间模式)


Posted in Javascript onJune 18, 2017

老规矩,先上效果图

微信小程序实现皮肤功能(夜间模式)

微信小程序实现皮肤功能(夜间模式)

个人对夜间模式这个功能情有独钟

晚上黑灯瞎火的看手机,屏幕亮度就算调到最低依然很是刺眼呀

所以我一直用某浏览器,因为有夜间模式

言归正传,依然是分析功能点

      1.点击按钮,切换一套css(这个功能很简单)

      2.把皮肤设置保存到全局变量,在访问其它页面时也能有效果

      3.把设置保存到本地,退出应用再进来时,依然加载上次设置的皮肤

先从切换开始吧,switch很少用,还是贴一下吧

<switch bindchange="switchChange" color ="#F39C89" class="switch"/>
Page({
 data: {
 skinStyle: ""
 },
 onLoad: function (options) {
 },
 switchChange:function(e){
 var that =this
 var style
 //如果开启
 if(e.detail.value == true){
  style="dark"
 }else{
  //否则
  style.skin = ""
 }
 //保存信息
 that.setData({
  skinStyle: style
 })
 }
})

按钮功能OK了,现在我们去写样式

像这种黑的风格的皮肤,大背景色用#000

小背景用#333,文字用#999吧,我也懒得用取色器了

既然需要一套皮肤,那我们就去文件夹外面写一个样式文件

就新建一个skin目录,下面写一个dark.wxss吧

然后呢

我们把普通模式下的wxss复制一份,贴进来

把和颜色有关的属性留下来,其它删除

像background呀,border,color等。。其它统统不要

最后发现就剩这么点了。。

/*夜间模式*/
/****个人信息页面****/
.dark-box{
 background: #000 !important;
}
/*用户信息部分*/
.dark-box .user-box{
 background: #333 !important;
 color: #999;
}
/*列表部分*/
.dark-box .extra-box{
 background: #333 !important;
}
.dark-box .extra-box .extra-item{
 border-bottom: 1px solid #000 !important;
}
.dark-box .extra-box .item-head{
 color: #999;
}
.dark-box .between-box{
 background: #333 !important;
}
.dark-box .between-left{
 background: #333 !important;
}
.dark-box .between-left .item-head{
 color: #999;
}
/****个人信息页面结束****/

大家发现,我这些样式名称都有dark-box

这个dark-box就是最外面,也是最大的盒子(除了默认的page哈)

my-box是普通模式,dark-box就是夜间模式

<view class="my-box {{skinStyle}}-box">

当然你也可以在写一个皮肤样式,黄、红、蓝。。。

现在这个写法,我们只用控制变量 skinStyle的值就能改变皮肤样式了

我们还能写个blue-box的皮肤,然后设置变量为skinStyle为blue就行了

还有关键一步,在wxss文件中把这个皮肤文件引入要显示的页面

@import "../../skin/dark.wxss";

接下来第二步,这就简单了。。

设置到全局变量嘛,先getApp(),然后传过去就行了

var app=getApp()
Page({
 data: {
 skinStyle: ""
 },
 onLoad: function (options) {
 },
 switchChange:function(e){
 var that =this
 //设置全局变量
 if(e.detail.value == true){
  app.globalData.skin="dark"
 }else{
  app.globalData.skin = ""
 }
 that.setData({
  skinStyle: app.globalData.skin
 })
 }
})

现在在访问其它页面的时候,dark皮肤也会传进去

我只写了一个页面哈,所以只有这个页面会有变化

现在第三步了,保存到localstroge中

var app=getApp()
Page({
 data: {
 skinStyle: ""
 },
 onLoad: function (options) {

 },
 switchChange:function(e){
 var that =this

 //设置全局变量
 if(e.detail.value == true){
  app.globalData.skin="dark"
 }else{
  app.globalData.skin = ""
 }
 that.setData({
  skinStyle: app.globalData.skin
 })
 //保存到本地
 wx.setStorage({
  key: "skin",
  data: app.globalData.skin
 })
 }
})

完了吗?并没有。。

我们要在程序打开时就获取皮肤设置

所以要在app.js去get与皮肤相关的信息

getSkin:function(){
 var that =this
 wx.getStorage({
  key: 'skin',
  success: function (res) {
  that.globalData.skin=res.data
  }
 })
 }

现在我们设置黑色皮肤,然后退出,进去之后不是黑色
因为我们在页面加载时没设置

onLoad: function (options) {
  var that =this 
  that.setData({
  skinStyle: app.globalData.skin
  })
 }

现在再来看看

微信小程序实现皮肤功能(夜间模式)

皮肤没问题了

结果按钮的状态是关闭,皮肤却是开着

因为开关重置了

这个就交给大家自己解决啦,启动时判断一下就OK啦

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
Riot.js 快速的JavaScript单元测试框架
Nov 09 Javascript
Firefox中autocomplete=&quot;off&quot; 设置不起作用Bug的解决方法
Mar 25 Javascript
myeclipse安装jQuery插件的方法
Mar 29 Javascript
基于jQuery的模仿新浪微博时间的组件
Oct 04 Javascript
javascript计算当月剩余天数(天数计算器)示例代码
Jan 09 Javascript
jquery复选框多选赋值给文本框的方法
Jan 27 Javascript
CSS3实现动态背景登录框的代码
Jul 28 Javascript
使用jQuery操作HTML的table表格的实例解析
Mar 13 Javascript
jquery实现网站列表切换效果的2种方法
Aug 12 Javascript
Vue 页面跳转不用router-link的实现代码
Apr 12 Javascript
如何编写一个d.ts文件的步骤详解
Apr 13 Javascript
详解JS WebSocket断开原因和心跳机制
May 07 Javascript
关于javascript作用域的常见面试题分享
Jun 18 #Javascript
Angular.js中下拉框实现渲染html的方法
Jun 18 #Javascript
Webpack打包css后z-index被重新计算的解决方法
Jun 18 #Javascript
利用JavaScript对中文(汉字)进行排序实例详解
Jun 18 #Javascript
JavaScript ES6中const、let与var的对比详解
Jun 18 #Javascript
jquery DataTable实现前后台动态分页
Jun 17 #jQuery
jQuery Jsonp跨域模拟搜索引擎
Jun 17 #jQuery
You might like
Netflix将与CLAMP、乙一以及冲方丁等6名知名制作人合伙展开原创动画计划!
2020/03/06 日漫
php遍历数组的方法分享
2012/03/22 PHP
php变量作用域的深入解析
2013/06/03 PHP
PHP实现的数组和XML文件相互转换功能示例
2018/03/15 PHP
实例讲解通过​PHP创建数据库
2019/01/20 PHP
JQUERY 浏览器判断实现函数
2009/08/20 Javascript
如何调试异步加载页面里包含的js文件
2014/10/30 Javascript
Javascript 赋值机制详解
2014/11/23 Javascript
原创jQuery弹出层插件分享
2015/04/02 Javascript
Javascript中实现String.startsWith和endsWith方法
2015/06/10 Javascript
jQuery实现仿百度首页滑动伸缩展开的添加服务效果代码
2015/09/09 Javascript
理解javascript对象继承
2016/04/17 Javascript
分享jQuery封装好的一些常用操作
2016/07/28 Javascript
细说webpack源码之compile流程-rules参数处理技巧(1)
2017/12/26 Javascript
Vue高版本中一些新特性的使用详解
2018/09/25 Javascript
IE8中jQuery.load()加载页面不显示的原因
2018/11/15 jQuery
详解javascript中var与ES6规范中let、const区别与用法
2020/01/11 Javascript
基于JQuery实现页面定时弹出广告
2020/05/08 jQuery
解决vue项目router切换太慢问题
2020/07/19 Javascript
微信小程序实现单个或多个倒计时功能
2020/11/01 Javascript
[46:50]Liquid vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python实现类似比特币的加密货币区块链的创建与交易实例
2018/03/20 Python
Django文件存储 自己定制存储系统解析
2019/08/02 Python
Python实现随机取一个矩阵数组的某几行
2019/11/26 Python
Python类class参数self原理解析
2020/11/19 Python
CSS3+DIV实现漂亮的动画彩色标签
2016/06/16 HTML / CSS
HTML5 Canvas如何实现纹理填充与描边(Fill And Stroke)
2013/07/15 HTML / CSS
医学护理毕业生自荐信
2013/11/07 职场文书
预备党员转正思想汇报
2014/01/12 职场文书
母亲80寿诞答谢词
2014/01/16 职场文书
早读课迟到检讨书
2014/09/25 职场文书
场地使用证明模板
2014/10/25 职场文书
师德标兵先进事迹材料
2014/12/19 职场文书
社区党支部承诺书
2015/04/29 职场文书
法律意见书范本
2015/06/04 职场文书
python中取整数的几种方法
2021/11/07 Python