css + vue实现一键换肤功能

  1. 使用vuex,在store中存一个默认值和切换的方法
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    theme:'白'
  },
  getters: {
  },
  mutations: {
    increment (state) {
      if(state.theme == '黑'){
        state.theme = '白'
      }else if(state.theme == '白'){
        state.theme = '黑'
      }
    }
  },
  actions: {
  },
  modules: {
  }
})

在组件中使用

<template>
  <div class="hello">
      测试文本
    <el-button @click="vuexx()">切换颜色</el-button>
  </div>
</template>

<script>
export default {
  name: 'HelloWorld',
  created(){
    this.vuexx();
  },
  methods:{
    vuexx(){
      this.$store.commit('increment') // 触发Vuex方法
      if(this.$store.state.theme == '黑'){
        document.documentElement.style.setProperty('--theme-background', 'black');
        document.documentElement.style.setProperty('--theme-color', 'red');
      }else if(this.$store.state.theme == '白'){
        document.documentElement.style.setProperty('--theme-background', 'red');
        document.documentElement.style.setProperty('--theme-color', '#fff');
      }
    }
  }
}
</script>

<style>
:root {
  --theme-color:#fff;
  --theme-background: black; /* 默认主题颜色值 */
}
.hello{
  height:100%;
  width: 100%;
  color: var(--theme-color);
  background: var(--theme-background);
}
</style>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值