В то время, когда мобильные телефоны и компьютеры используются так часто, приложения могут менять свои скины, чтобы улучшить эстетику и уменьшить раздражение экрана для глаз, что, несомненно, очень помогает пользователю.
Не сплетничайте, давайте сначала выложим код
адрес на гитхабе:Моя годовая цель - апплет WeChat
демо
Отсканируйте код, чтобы попробовать, или выполните поиск по запросу «Моя цель на год».
Ниже приведен эффект смены скина
реализовать функцию
Чтобы добиться эффекта изменения кожи, как указано выше, есть несколько идей:
- Подготовить wxss, относящийся к скину, и внедрить его в app.wxss, что удобно для каждой страницы;
- При установке скина динамически меняйте имя класса или id элемента в wxml, чтобы страница применяла соответствующий скин;
- Сохраните значение выбранного скина в локальном кэше апплета, чтобы другие страницы и при следующем открытии апплета отображали правильный скин;
Вот некоторые детали внедрения
wxml
<view class="page" id='{{skin}}'>
<view class="container">
...
</view>
</view>
Часть wxml относительно проста, вам нужно только динамически переключать идентификатор.Обратите внимание, что, поскольку страница не может динамически устанавливать цвет фона, для самого внешнего слоя здесь требуется ширина: 100%; высота: 100%; иначе скин не будет в состоянии покрыть страницу.
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;
}
...
Напишите цветовой стиль, соответствующий скину, и поместите его прямо в app.wxss.Если стилей слишком много, вы можете использовать отдельный файл wxss для удобства управления.
@import "style/skin/dark.wxss";
js
Сохранить выбранное значение скина
//wxml
//<view bindtap="setSkin" data-flag='yellow'>橘黄</view>
//bindtap事件函数
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 используется для немедленного создания идентификатора переключения страниц, а wx.setStorage используется для хранения значения app.setSkin — это общедоступный метод, определенный в app.js, который будет представлен ниже.
//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 предоставляется для всех вызовов страниц и устанавливает цвет фона и текста заголовка и области навигации с помощью существующего цвета темы оформления.
Откройте обычную страницу wxml и установите скин
const app = getApp();
Page({
data: {
skin: 'normal-skin',
},
onLoad: function() {
app.setSkin(this);
},
onShow:function(){
app.setSkin(this);
}
})
Установите скин, когда запускаются onLoad и onShow. OnShow здесь, чтобы избежать сброса скина, и на странице также будет отображаться последний скин. Поскольку первая загрузка будет установлена дважды, app.setSkin в onLoad фактически может быть удален.
Пока что реализована изысканная функция настройки скина, друзья, заходите и пробуйте!
наконец
Новый 2019 год, новые жизненные цели, добро пожаловать в апплет WeChat «Мои годовые цели», если у вас есть какие-либо предложения, дайте мне знать или потяните запросы, спасибо.
Другие введения этого апплета:
Достигнута ли ваша годовая цель? Не забудьте один раз разработать апплет WeChat.