vue3+elementPlus主题动态切换2022,亲测可用!

本文介绍了如何在Vue3项目中结合ElementPlus实现动态主题切换。首先,需要获取主题文件,然后根据主题类型使用函数加载相应的CSS变量。在实际应用中,可以适当裁剪CSS变量文件。切换主题时,通过控制CSS变量实现颜色同步更改。文章还解答了关于主题切换的一些疑问,如CSS变量的来源和基本色色阶的作用。
摘要由CSDN通过智能技术生成

环境

  • 系统: win10 64
  • node版本 v16.13.2
  • vue: ^3.2.33
  • element-plus: ^2.2.0

开始

获取主题文件

  • 文件内容太长了从示例仓库复制点击打开 或者直接拷贝仓库themes.js文件放到项目中。
    截屏2022-05-17 下午4.20.45.png
  • 当然这么多css 变量不是每个都需要改的,本文作为示例文章所以存入了全部的变量(能获取到的)。个人依实际情况进行删减保留!!!

根据主题类型使用函数进行动态切换加载css变量

  • 项目中控制主题切换的地方引入上边获取到的 themes.js(当然你的文件名字如果不是这个请根据实际情况来) 主题文件。
  • 作者放在了 src -> utils -> themes.js 目录下,所以导入路径是import themes from '@/utils/themes'

    src -> utils -> elCssVar.json 是获取的element-plus的css变量

  • 通过 switchTheme函数 来控制主题的切换
data() {
   
  return {
   
    currentSkinName: 'darkTheme',
    themeColorObj: {
   
      defaultTheme: {
   
        title: '浅色主题'
      },
      darkTheme: {
   
        title: '深色主题'
      }
    },
    themeObj: {
   }
  };
},
mounted() {
   
  this.switchTheme()
},
methods: {
   
  // 根据不同的主题类型 获取不同主题数据
  switchTheme(type) {
   
    // themes 对象包含 defaultTheme、darkTheme 两个属性即默认主题与深色主题
    this.currentSkinName = type || 'darkTheme'
    this.themeObj = themes[this.currentSkinName]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值