uniapp 实现动态切换全局主题色

摘要:
要求:要在开发的应用程序中切换主题颜色,如果只需要一种主题颜色,但不需要切换,则可以使用uniappSCSS文件文档思想:预先在公共css中定义所需的主题颜色。这里只是一个定义两种颜色的参考文档的示例,可以从中获得想法。您可以使用css属性选择器动态设置数据xx以动态更改主题颜色。最初,您希望将一个变量直接混合到mixin中,以实现主题颜色的全局控制,忽略了minxi数据需要是一个函数,因此返回的值是

需求:实现开发的应用中切换主题色

如果只是需要一个主题色没有切换的需要 完全可以使用uniapp里面uni.scss文件文档

思路:预先在一个公共css中定义你需要的主题颜色,这里只是示例定义了两种颜色

  • 参考文档 从中获得思路可以通过动态设置data-xx从而配合css属性选择器来动态改变主题色
  • 本来是想通过mixin直接混入一个变量来达到全局控住主题色,忽略了minxi的data需要是一个函数 所以返回的值在每个页面之间是不关联的,从而使用vuex,也可以定义一个全局变量uni里面使用全局变量
  • 使用store的原因是潘佳辰大佬使用store实现动态路由以及头部栏的固定
  • 上图真机为红米k30ultra 安卓10

uniapp 实现动态切换全局主题色第1张
uniapp 实现动态切换全局主题色第2张

实现

  • 涉及到的知识点为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 实现动态切换全局主题色》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇nginx做本地目录映射01 . 美团全链路监控CAT简介及部署下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Windows10 切换用户访问共享

前言 Windows 对于访问共享文件夹的用户管理策略——是这样的: 第一次访问需要登录的共享文件夹:输入用户名、密码。 第一次 以后 访问同一的共享文件夹:默认上次使用的用户名、密码。 所以会出现无法切换用户登录的情况。 本文就此问题提供解决方法。 问题举例 找不到切换用户的入口 右键共享文件夹 “映射网络驱动器” 使用其他账户登录时: “网络文...

Swift开发学习(二):Playground

http://blog.csdn.net/powerlly/article/details/29674253 Swift开发学习:Playground 关于 对于软件用户、游戏玩家,大家一直都在提倡用户体验。其实软件开发者自己也是用户,是各种开发工具的使用者,也会喜欢用户体验做得好的工具软件。这次苹果想开发者所想,提供了一个可以玩转swift的游乐场--P...

Robot Framework与Web界面自动化测试:简单例子

假设环境已经搭建好了。这里用RIDE( Robot Framework Test Data Editor)工具来编写用例。下面我们对Robot Framework简称rf。 我们先考虑下一个最基本的登录功能的测试用例。 一、自动化测试 与 人工测试 在开始编写用例之前,我们先来思考下自动化测试和人工测试的区别。对于web页面的人工测试,我们想下,如果去测试...

云端远程Ubuntu系统进行无桌面Web浏览器自动化测试

【摘要】 利用xvfb提供的显卡帧缓冲区,让浏览器以为有桌面,以达到无桌面系统下测试真实浏览器兼容性的目的。 自动化web界面测试往往需要验证真实浏览器的兼容性,但是云端系统往往并不提供图形化的桌面,所以自动化web界面测试在云端就成为一个问题。本文描述了一个技巧解决这个问题,其主要原理是利用xvfb提供的显卡帧缓冲区,让浏览器以为有桌面。 Install...

ASP操作Excel技术总结

目录一、环境配置二、ASP对Excel的基本操作三、ASP操作Excel生成数据表四、ASP操作Excel生成Chart图五、服务器端Excel文件浏览、下载、删除方案六、附录正文一、环境配置服务器端的环境配置从参考资料上看,微软系列的配置应该都行,即:1.Win9x+PWS+Office2.Win2000Professional+PWS+Office3....

easy-wechat

https://www.easywechat.com/docs/master/installation -----其它的回复 创建菜单自定义菜单事件 地理位置回复素材发送一次性订阅消息 与 发送模板消息 -------- easy-wechat获取微信服务器 IP (或IP段) $ips = $app->base->getValidIps();...