微信小程序 主题皮肤切换(switch开关)
示例效果:

功能点分析:
1.点击switch开关,切换主题皮肤(包括标题栏、底部tabBar);
2.把皮肤设置保存到全局变量,在访问其它页面时也能有效果
3.把设置保存到本地,退出应用再进来时,依然加载上次设置的皮肤
步骤:
1、需要切换的皮肤:新建一个skin目录,下面写一个skin.wxss

black_box就是最外面,也是最大的盒子(除了默认的page哈); black_box就是切换的皮肤;
还有关键一步,在app.wxss文件中把这个皮肤文件引入,因为换肤是所有页面都变化
@import "skin/skin.wxss";
通过控制skinStyle的值“black”来改变皮肤样式,我们还能写个blue_box的皮肤,然后设置变量为skinStyle为blue就行了
2、switch开关:
user.wxml:
user.js:根据皮肤开关设置皮肤模式(包括标题栏、tabBar等),并保存到本地; 最后,在每个页面,包括切换皮肤的页面的Page中的onLoad事件里,设置标题栏背景及SkinStyle的值;
const app = getApp()
Page({
data: {
skinStyle: '',
},
//皮肤开关
switchChange: function (e) {
var that = this;
//开启
if (e.detail.value == true) {
app.globalData.skin = "black"
app.setSkinBlackTitle(); //设置标题栏
app.globalData.skinSwitch = true
app.setBlackTabBar(); //设置tabBar
} else {
app.globalData.skin = 'normal'
app.setSkinNormalTitle()
app.globalData.skinSwitch = false
app.setNormalTabBar();
}
that.setData({
skinStyle: app.globalData.skin
})
//保存到本地
wx.setStorage({
key: "skin",
data: app.globalData.skin
})
wx.setStorage({
key: "skinSwitch",
data: app.globalData.skinSwitch
})
}, onLoad: function (options) {
app.setNavBarBg();//设置标题栏背景色
var that = this
that.setData({
skinStyle: app.globalData.skin,
skinSwitch: app.globalData.skinSwitch
})
}
})
app.js:
在app.js的文件中,Page里的globalData中设置:skin:"normal",即默认为normal皮肤;tabBar数据配置;
我们要在程序打开时就获取皮肤设置,所以要在app.js去get与皮肤、标题、tabBar相关的信息:getSkin()
//app.js
App({
onLaunch: function () {
console.log('进入app');
// 展示本地存储能力
var logs = wx.getStorageSync('logs') || []
logs.unshift(Date.now())
wx.setStorageSync('logs', logs) this.login();
this.getSkin();
},
globalData: {
userInfo: null,
skin: 'normal',
skinSwitch: '',
}, //设置tabBar -- 默认模式
setNormalTabBar(){
wx.setTabBarItem({
index: 0,
text: '首页',
iconPath: "images/icons/home_1.png",
selectedIconPath: "images/icons/home_2.png",
})
wx.setTabBarItem({
index: 1,
text: '报名',
iconPath: "images/icons/apply_1.png",
selectedIconPath: "images/icons/apply_2.png",
})
wx.setTabBarItem({
index: 2,
text: '我的',
iconPath: "images/icons/user_1.png",
selectedIconPath: "images/icons/user_2.png",
})
wx.setTabBarStyle({
color: '#7f8389',
selectedColor: '#329fff',
backgroundColor: '#f7f7fa',
borderStyle: 'black'
})
},
//设置tabBar -- 黑色模式
setBlackTabBar(){
wx.setTabBarItem({
index: 0,
text: '首页',
iconPath: "images/icons/icon_home_1.png",
selectedIconPath: "images/icons/icon_home_2.png",
})
wx.setTabBarItem({
index: 1,
text: '报名',
iconPath: "images/icons/icon_apply_1.png",
selectedIconPath: "images/icons/icon_apply_2.png",
})
wx.setTabBarItem({
index:2,
text: '我的',
iconPath: "images/icons/icon_user_1.png",
selectedIconPath: "images/icons/icon_user_2.png",
})
wx.setTabBarStyle({
color: '#2e3136',
selectedColor: '#ef384a',
backgroundColor: '#ffffff',
borderStyle: 'black'
})
},
//皮肤
getSkin: function () {
var that = this
wx.getStorage({
key: 'skin',
success: function (res) {
that.globalData.skin = res.data
if (that.globalData.skin == 'normal') {
that.globalData.skinSwitch = false
that.setSkinNormalTitle()
that.setNormalTabBar();
} else {
that.globalData.skinSwitch = true
that.setSkinBlackTitle()
that.setBlackTabBar()
}
}
})
}, //导航栏标题背景
setNavBarBg: function () {
var that = this
if (that.globalData.skin == "normal") {
that.setSkinNormalTitle()
} else {
that.setSkinBlackTitle()
}
},
setSkinBlackTitle: function () {
wx.setNavigationBarColor({
frontColor: '#ffffff',
backgroundColor: '#2e3136',
})
},
setSkinNormalTitle: function () {
wx.setNavigationBarColor({
frontColor: '#000000',
backgroundColor: '#ffffff',
})
},
});
微信小程序 主题皮肤切换(switch开关)的更多相关文章
- 微信小程序换皮肤,动态切换菜单栏和导航栏的样式,动态修改TabBar和NavigationBar
在做微信小程序换皮肤的时候,需要动态修改菜单栏(TabBar)和导航栏(NavigationBar) 但是在小程序中它们的样式是写在app.json里面,而且app.json是静态编译,运行时哪怕你修 ...
- 微信小程序写tab切换
微信小程序之tab切换效果,如图: 最近在学习微信小程序并把之前的公司app搬到小程序上,挑一些实现效果记录一下(主要是官方文档里没说的,毕竟官方文档只是介绍功能) .wxml代码: <view ...
- 微信小程序Tab选项卡切换大集合
代码地址如下:http://www.demodashi.com/demo/14028.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.co ...
- 微信小程序左右滑动切换页面示例代码--转载
微信小程序——左右滑动切换页面事件 微信小程序的左右滑动触屏事件,主要有三个事件:touchstart,touchmove,touchend. 这三个事件最重要的属性是pageX和pageY,表示X, ...
- 微信小程序开发--路由切换,页面重定向
这段时间开发了一个微信小程序,虽然小程序的导航API 官方文档写得很详细,但是在具体开发过程中还是会遇到很多不明白,或者一时转不过弯的地方. 1.页面切换传参,参数读取 1.1 wx.navigat ...
- 微信小程序左右滑动切换图片酷炫效果
开门见山,先上效果吧!感觉可以的用的上的再往下看. 心动吗?那就继续往下看! 先上页面结构吧,也就是wxml文件,其实可以理解成微信自己封装过的html,这个不多说了,不懂也没必要往下看了. < ...
- 微信小程序左右滑动切换图片酷炫效果(附效果)
开门见山,先上效果吧!感觉可以的用的上的再往下看. 心动吗?那就继续往下看! 先上页面结构吧,也就是wxml文件,其实可以理解成微信自己封装过的html,这个不多说了,不懂也没必要往下看了. < ...
- 微信小程序标签页切换
WXML中: <view class="swiper-tab"> <view class="swiper-tab-list {{currentTab== ...
- 微信小程序之 catalog 切换
组件名称:catalog 组件属性:catalogData,type:String 组件描述:这是一个子组件,数据从父组件中传递 效果图: catalog 目录为多个,使用 scroll-view 容 ...
随机推荐
- 24. Java SE 、 Java EE 、JavaME 、 JavaWeb 直接的区别和联系
这个是在别人博客抄的,并不是本人撰写 Java是一门编程语言.Java分为三大版本,SE即标准版,包含了Java核心类库,主要用来开发桌面应用:EE即企业版,包含SE,又有扩展部分(Servlet,J ...
- Java List 快速搜索对象
比如现在有一个需求现在有一个List 里面装Student 对象 我们想找出这个List 对象里面student name=小明的对象 我想很多同学会像以前的我一样变量List 然后去比较 但是这样处 ...
- 2019 hdu多校1
A:一类线性dp,时间卡的有点紧 /* 定义 dp[t][i][j][k]代表填完前 t 个位置后,{0, 1, 2, 3} 这 4 个数字最后一次出现的位置, 排序后为 t, i, j, k(t & ...
- 主席树/线段树模拟归并排序+二分答案(好题)——hdu多校第4场08
用主席树写起来跑的快一点,而且也很傻比,二分答案,即二分那个半径就行 主席树求的是区间<=k的个数 #include<bits/stdc++.h> using namespace s ...
- scrapy爬取cnblogs文章列表
scrapy爬取cnblogs文章 目标任务 安装爬虫 创建爬虫 编写 items.py 编写 spiders/cnblogs.py 编写 pipelines.py 编写 settings.py 运行 ...
- Openstack nova-scheduler 源码分析 — Filters/Weighting
目录 目录 前言 调度器 FilterScheduler调度器的工作流程 Filters 过滤器 Filters 类型 Weighting 权重 源码实现 关键文件及其意义 阶段一nova-sched ...
- ActiveMQ 反序列化漏洞(CVE-2015-5254)
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "touch /tmp/success" -Yp ROME 192. ...
- Python3 From Zero——{最初的意识:008~初级实例演练}
一.构显国际橡棋8x8棋盘 #!/usr/bin/env python3 #-*- coding:utf-8 -*- color_0="\033[41m \033[00m" col ...
- 基于airtest的朋友圈自动点赞
本脚本可以通过AirtestIDE和python执行,推荐使用AirtestIDE的环境执行,更稳定一些 AirtestIDE官方文档 使用python执行该脚本 安装库 airtest.pocoui ...
- shell 一些命令(转)
shell 一些命令(转) https://www.cnblogs.com/amei0/p/8041989.html 参考文档 http://man.linuxde.net/ 一.awk 求和 awk ...