vue项目实现简单换肤功能

项目遇到换肤功能,需求是固定三种主题色配置,
实现思路如下

换肤实现

在src/assets/css/目录下定义了mixin.scss文件
文件中定义各主题色下,不同需要随着主题色改变的色值,比如:
定义主题字体颜色色值

@mixin theme-color {
  [data-theme="blue"] & {
    color: #387af0;
  }

  [data-theme="yellow"] & {
    color: yellow;
  }
}

在组件中引入mixin.scss文件

<style lang="scss" scoped>
@import "@/assets/css/mixin.scss";
</style>

在需要使用字体色值的地方使用
@include theme-color;
即可实现色值随着主题改变而改变

在打开项目时先调用接口,获取当前需要显示的主题色,并根据管理端设置的主题色显示当前主题色

curretTheme().then(res => {
	this.theme = res.theme
	if(this.theme == 1) {  // 根据实际项目后端配置来做判断
		window.document.documentElement.setAttribute('data-theme', 'blue')
		this.$store.commit('changeTheme', 'blue')
	}else if(this.theme == 2) {
		window.document.documentElement.setAttribute('data-theme', 'red')
		this.$store.commit('changeTheme', 'red')
	}else if(this.theme == 4) {
		// 设置全站灰色系,用于清明节等哀悼日
		document.getElementsByTagName('body')[0].style.cssText = `
              -webkit-filter: grayscale(100%); 
              -moz-filter: grayscale(100%); 
              -ms-filter: grayscale(100%); 
              -o-filter: grayscale(100%); 
              filter: grayscale(100%);
              filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1); 
              filter:gray;
            `
	}
})
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值