暗黑--日间主题切换动画

   看了 Vue3  Element Plus 的暗黑和日间主题切换动画,觉得挺不错的,就把这个动画单独摘出来重新封装了一下,可以在自己的项目中实现,现在记录一下这个实现方法

一、安装插件

这个方法重新封装了一下,代码不多,也更加方便实现

// yarn 安装
yarn add @travel_wsy/change_dark

// npm 安装
npm install @travel_wsy/change_dark -S

二、引入插件

在需要的页面引入即可,不需要全局引入;这里引入方法和样式

// 引入方法
import {change_dark} from '@travel_wsy/change_dark'
// 引入样式
import '@travel_wsy/change_dark/index.css'

三、使用方法

这里有2个参数:event :当前切换暗黑模式的节点;isDark:是否暗黑模式,根据项目记录的情况判断当前是否暗黑模式;fun :动画切换回调,在这个回调函数中主要实现项目中暗黑和日间模式切换实现方法,一般是使用store状态管理来实现的 

/**
*  event 当前点击节点
*  isDark  是否暗黑模式
*  回调函数
**/
change_dark(event,isDark,async () =>{
  // 添加dark到html
 document.getElementsByTagName("html")[0].className = isDark ? 'dark':''
  // 在这里添加项目暗黑-日间模式切换代码
 await this.$nextTick()
})

完整代码如下:

HTML:

     <div>
        <div @click="handleChangeTheme('theme-sun',$event)">
         日间
        </div>
        <div @click="handleChangeTheme('theme-dark',$event)">
          暗黑
        </div>
      </div>

JS:

    handleChangeTheme(val,event) {
      let isDark = val == 'theme-dark'
      change_dark(event,isDark,async () =>{
        document.getElementsByTagName("html")[0].className = isDark ? 'dark':''
        this.$store.commit('SET_THEME_NAME', val)
        setTheme(val)
        await this.$nextTick()
      })
    },

效果图:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

travel_wsy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值