微信小程序換膚功能實(shí)現(xiàn)代碼(思路詳解)
在手機(jī)、電腦使用頻率如此高的當(dāng)下,應(yīng)用可以更換皮膚,以提升美觀性,并減輕屏幕對(duì)眼睛的刺激,無(wú)疑對(duì)用戶體驗(yàn)有很大的幫助
實(shí)現(xiàn)功能
要實(shí)現(xiàn)如上更換皮膚的效果,有幾個(gè)思路:
1.準(zhǔn)備皮膚相關(guān)的wxss,引入到app.wxss中,方便每個(gè)頁(yè)面使用;
2.設(shè)置皮膚時(shí),動(dòng)態(tài)改變wxml中元素的類名或id,使頁(yè)面應(yīng)用對(duì)應(yīng)的皮膚;
3.將選中皮膚的值保存在小程序本地緩存中,保證其他頁(yè)面及下一次打開(kāi)小程序時(shí),頁(yè)面展示正確的皮膚;
下面介紹一些實(shí)現(xiàn)的細(xì)節(jié)
wxml
<view class="page" id='{{skin}}'> <view class="container"> ... </view> </view>
wxml部分比較簡(jiǎn)單,只需要?jiǎng)討B(tài)切換id即可,注意因?yàn)閜age無(wú)法動(dòng)態(tài)設(shè)置背景色,所以這里的最外層需要width: 100%;height: 100%;,否則將無(wú)法使皮膚鋪滿頁(yè)面。
wxss
/* app.wxss主題顏色 */ /* 深黑 */ #dark-skin{ background: #000; } #dark-skin .bColor{ background: #333; color: #999; } #dark-skin .borderColor{ border-color:#999; } /* 粉紅 */ #red-skin{ background: #f9e5ee; } #red-skin .bColor{ background: #f9e5ee; color: #8e5a54; } #red-skin .borderColor{ border-color:#8e5a54; } /* 橘黃 */ #yellow-skin{ background: #f6e1c9; } #yellow-skin .bColor{ background: #f6e1c9; color: #8c6031; } #yellow-skin .borderColor{ border-color:#8c6031; }
寫(xiě)好皮膚對(duì)應(yīng)的顏色樣式,直接放入app.wxss中即可,如果樣式過(guò)多,可以使用單獨(dú)的wxss文件,方便管理。
@import "style/skin/dark.wxss";
js
存儲(chǔ)選中的皮膚值
//wxml //<view bindtap="setSkin" data-flag='yellow'>橘黃</view> //bindtap事件函數(shù) setSkin:function(e){ var skin = e.target.dataset.flag; this.setData({ skin: skin + '-skin', openSet:false }) wx.setStorage({ key: "skin", data: skin + '-skin' }) app.setSkin(this); }
這里使用setData使頁(yè)面立即切換id,使用wx.setStorage存儲(chǔ)值,app.setSkin是定義在app.js上的公共方法,下面會(huì)有介紹
//app.js App({ data: { }, setSkin:function(that){ wx.getStorage({ key: 'skin', success: function(res) { if(res){ that.setData({ skin: res.data }) var fcolor = res.data == 'dark-skin' ? '#ffffff' : '#000000', obj = { 'normal-skin':{ color:'#000000', background:'#f6f6f6' }, 'dark-skin': { color: '#ffffff', background: '#000000' }, 'red-skin': { color: '#8e5a54', background: '#f9e5ee' }, 'yellow-skin': { color: '#8c6031', background: '#f6e1c9' }, 'green-skin': { color: '#5d6021', background: '#e3eabb' }, 'cyan-skin': { color: '#417036', background: '#d1e9cd' }, 'blue-skin': { color: '#2e6167', background: '#bbe4e3' } }, item = obj[res.data], tcolor = item.color, bcolor = item.background; wx.setNavigationBarColor({ frontColor: fcolor, backgroundColor: bcolor, }) wx.setTabBarStyle({ color: tcolor, backgroundColor: bcolor, }) } } }) } })
app.setSkin提供給所有頁(yè)面調(diào)用,并通過(guò)已有的皮膚顏色,設(shè)置頭部和導(dǎo)航區(qū)域的背景及文字顏色。
打開(kāi)一個(gè)普通wxml頁(yè)面,并設(shè)置皮膚
const app = getApp(); Page({ data: { skin: 'normal-skin', }, onLoad: function() { app.setSkin(this); }, onShow:function(){ app.setSkin(this); } })
在onLoad及onShow觸發(fā)時(shí)設(shè)置皮膚,這里的onShow是為了避免重新設(shè)置皮膚時(shí),頁(yè)面還顯示上一次的皮膚,由于首次加載會(huì)設(shè)置兩次,onLoad里的app.setSkin其實(shí)可以去掉。
至此,一個(gè)精美的設(shè)置皮膚功能就實(shí)現(xiàn)了,小伙伴們快去試一試吧!
總結(jié)
到此這篇關(guān)于微信小程序換膚功能實(shí)現(xiàn)代碼(思路詳解)的文章就介紹到這了,更多相關(guān)微信小程序換膚內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
js實(shí)現(xiàn)的類似QQ的等級(jí)的代碼
類似QQ等級(jí)2008-09-09javascript設(shè)計(jì)模式 – 命令模式原理與用法實(shí)例分析
這篇文章主要介紹了javascript設(shè)計(jì)模式 – 命令模式,結(jié)合實(shí)例形式分析了javascript命令模式相關(guān)概念、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下2020-04-04詳解JS中的compose函數(shù)和pipe函數(shù)用法
這篇文章主要介紹了JS中的compose函數(shù)和pipe函數(shù)用法,想深入了解Javascript的同學(xué),可以參考下2021-04-04純JavaScript實(shí)現(xiàn)櫻花飄落效果的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何純JavaScript實(shí)現(xiàn)櫻花飄落效果,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-04-04Bootstrap每天必學(xué)之彈出框(Popover)插件
Bootstrap每天必學(xué)之彈出框(Popover)插件,彈出框的內(nèi)容完全可使用 Bootstrap 數(shù)據(jù) API(Bootstrap Data API)來(lái)填充,如何實(shí)現(xiàn)請(qǐng)參考本文2016-04-04js實(shí)現(xiàn)簡(jiǎn)潔大方的二級(jí)下拉菜單效果代碼
這篇文章主要介紹了js實(shí)現(xiàn)簡(jiǎn)潔大方的二級(jí)下拉菜單效果代碼,涉及javascript通過(guò)鼠標(biāo)事件控制頁(yè)面元素的動(dòng)態(tài)變換技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09Javascript實(shí)現(xiàn)動(dòng)態(tài)菜單添加的實(shí)例代碼
在注冊(cè)信息的時(shí)候,常常需要通過(guò)下拉菜單讓用戶選擇,而且希望用戶在第一個(gè)下拉框做的選擇,影響第二個(gè)下拉框的內(nèi)容。有時(shí)候,如果第一個(gè)下拉框不作出選擇,第二個(gè)下拉框根本不會(huì)頁(yè)面上顯示,為了給用戶呈現(xiàn)一個(gè)更清晰的頁(yè)面。2013-07-07uniapp開(kāi)發(fā)小程序的經(jīng)驗(yàn)總結(jié)
這篇文章主要給大家介紹了關(guān)于uniapp開(kāi)發(fā)小程序的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04