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


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 相关文章推荐
js 代码优化点滴记录
Feb 19 Javascript
javascript中注册和移除事件的4种方式
Mar 20 Javascript
JS实现Enter键跳转及控件获得焦点
Aug 12 Javascript
小米公司JavaScript面试题
Dec 29 Javascript
Shell脚本实现Linux系统和进程资源监控
Mar 05 Javascript
BootStrap Typeahead自动补全插件实例代码
Aug 10 Javascript
jQuery动态修改字体大小的方法【测试可用】
Sep 09 Javascript
Javascript 实现简单计算器实例代码
Oct 23 Javascript
原生js实现鼠标跟随效果
Feb 28 Javascript
JavaScript ES6中的简写语法总结与使用技巧
Dec 30 Javascript
js实现随机点名功能
Dec 23 Javascript
Vue 打包后相对路径的引用问题
Jun 05 Vue.js
关于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
PHP数据库万能引擎类adodb配置使用以及实例集锦
2014/06/12 PHP
浅析php原型模式
2014/11/25 PHP
PHP模糊查询的实现方法(推荐)
2016/09/06 PHP
thinkphp利用模型通用数据编辑添加和删除的实例代码
2016/11/20 PHP
PHP实现添加购物车功能
2017/03/06 PHP
PHP生成随机数的方法总结
2018/03/01 PHP
JavaScript动态改变表格单元格内容的方法
2015/03/30 Javascript
浅谈setTimeout 与 setInterval
2015/06/23 Javascript
Javascript在IE和Firefox浏览器常见兼容性问题总结
2016/08/03 Javascript
Javascript实现登录记住用户名和密码功能
2017/03/22 Javascript
js 去掉字符串前后空格实现代码集合
2017/03/25 Javascript
Vue.js实例方法之生命周期详解
2017/07/03 Javascript
AngularJS实现select的ng-options功能示例
2017/07/12 Javascript
移动端效果之Swiper详解
2017/10/09 Javascript
anime.js 实现带有描边动画效果的复选框(推荐)
2017/12/24 Javascript
JS基于for语句编写的九九乘法表示例
2018/01/04 Javascript
浅谈vue单一组件下动态修改数据时的全部重渲染
2018/03/01 Javascript
基于Angular中ng-controller父子级嵌套的相关属性详解
2018/10/08 Javascript
layui 关闭open弹出框 刷新table表格页面的方法
2019/09/16 Javascript
vue基于better-scroll仿京东分类列表
2020/06/30 Javascript
Python中使用partial改变方法默认参数实例
2015/04/28 Python
python实现bucket排序算法实例分析
2015/05/04 Python
Python3.4 splinter(模拟填写表单)使用方法
2018/10/13 Python
python中aioysql(异步操作MySQL)的方法
2019/04/11 Python
python:解析requests返回的response(json格式)说明
2020/04/30 Python
Python变量格式化输出实现原理解析
2020/08/06 Python
python利用faker库批量生成测试数据
2020/10/15 Python
Lacoste澳大利亚官网:服装、鞋类及配饰
2018/11/14 全球购物
英国最大的滑板品牌选择:Route One
2019/09/22 全球购物
美国在线医疗分销商:MedEx Supply
2020/02/04 全球购物
大学生的创业计划书就该这么写
2014/01/30 职场文书
电大毕业个人生自我鉴定
2014/03/26 职场文书
领导干部学习“三严三实”思想汇报
2014/09/15 职场文书
英语感谢信范文
2015/01/20 职场文书
《自然之道》读后感3篇
2019/12/17 职场文书
移除Selenium中window.navigator.webdriver值
2022/06/10 Python