vue 动态切换class 循环_基于vue+vant项目动态换肤切换主题方案

269cd786fa10599e188012f46477225f.png

vantui里自带了主题定制功能,是在webpack中进行配置,无法在项目中动态切换皮肤,下面介绍一下在项目里动态换肤,以达到随意切换主题的功能。

开始之前,先介绍几个知识点:

  1. html DOM的属性 data-xxx:
<div id="app" data-theme="test">测试</div>
data-* : html5新增的属性,用于存储页面或应用程序的私有自定义数据

该属性值可以在js中直接进行操作:

const dom = document.querySelector("#app")
dom.dataset.theme = 'test2'
console.log(dom.dataset.theme)

在css中也可以直接操作:

#app[data-theme="test2"] {
    color: #eeeeee;
}
// 给data-theme为test2的DOM元素设置新样式

下面开始正题:

首先在App.vue组件增加data-theme

a88cb295343ffcc9190a27ad7926414f.png

比如,我们默认它的data-theme是blue,先写好默认样式,我们还有一个黄色的主题色,此时我们新建一个 yellowTheme.scss的主题样式包:

5e03c929ffc86c76c1f0bf370a2a7ece.png

在项目入口文件main.js中引入。准备工作完成后,接下来开始操作切换。

525259322626046ecd43d3db7f83ee0e.png

示例是通过监听切换操作的回调来进行判断,你也可以通过其他方式进行监听换肤操作。

比如,当监听到skin为2时,表示使用黄色主题,此时设置data-theme为yellow,即可切换。

再回看yellowTheme.scss文件,当data-theme="yellow"时,即使用该主题包,即可动态切换主题。


该方法需要你写多套主题色的样式包,以供切换。
另一种方法是可以通过修改vantui的样式变量进行切换主题,比较简单。

比如:它的按钮 type=info的背景色样式变量 @blue: #1989fa;你试着直接修改该变量即可实现全局样式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值