uniapp 实现动态切换全局主题色
需求:实现开发的应用中切换主题色
如果只是需要一个主题色没有切换的需要 完全可以使用uniapp里面uni.scss文件文档
思路:预先在一个公共css中定义你需要的主题颜色,这里只是示例定义了两种颜色
- 参考文档 从中获得思路可以通过动态设置
data-xx
从而配合css属性选择器来动态改变主题色 - 本来是想通过
mixin
直接混入一个变量来达到全局控住主题色,忽略了minxi的data需要是一个函数 所以返回的值在每个页面之间是不关联的,从而使用vuex
,也可以定义一个全局变量uni里面使用全局变量 - 使用
store
的原因是暂时想不到其他比较好的方法 - 上图真机为红米k30ultra 安卓10
实现
- 涉及到的知识点为uniappp vuex(这里我使用了store的模块化)
- 全局css在app.vue里面引入
[data-theme='pink'] {
background-color: pink;
color: #fff;
}
[data-theme='blue'] {
background-color: blue;
color: #fff;
}
- 我们可以在
vuex
中定义一个appTheme
全局主题变量,并且写入一个函数以此来修改主题变量
const state = {
appTheme: 'pink'
};
const mutations = {
TOGGLE_APP_THEME(state, color = 'pink') { //你可以传入一个颜色参数(需要上面公共css中含有,如果不传入默认为粉色)
console.log(color)
state.appTheme = color
}
}
const getters = {}
const actions = {};
export default {
state,
actions,
mutations,
getters,
namespaced: true
}
//getters中的数据(这里的getters是单个文件)
appTheme(state) {
return state.setting.appTheme
}
- 在单页面中给你所需要设置主题色的dom添加date-them属性
//html
<text :data-theme="appTheme" @tap="toggleAppTheme('pink')">切换主题色</text>
//js
import { mapGetters } from 'vuex';
computed: {
...mapGetters(['appTheme'])
}
- 为了省事我直接在main.js使用mixin混入了
toggleAppTheme
函数
Vue.mixin({
methods: {
toggleAppTheme(color = 'blue') {
this.$store.commit('setting/TOGGLE_APP_THEME', color);
}
}
})
感觉这种方式挺麻烦的,期望大佬出现
分类:
uniapp
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
2019-11-27 排序方法
2019-11-27 npm的安装,升级与卸载
2019-11-27 Js数组排序以及对象排序