ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Vue项目切换主题功能(切换CSS)

2022-01-26 12:06:45  阅读:188  来源: 互联网

标签:Vue GLOBAL loadStyle value styleDefine THEME localStorage 切换 CSS


引申:
网上的方式大多是通过在静态文件夹下存放两套CSS,
在index.html里,
动态写入 link标签,
动态切换CSS,
这种方法理论来说可行,但是可能存在样式覆盖问题,

后来尝试后不可行,于是把主意打到了main.js里面

const styleDefine = localStorage.get('GLOBAL_THEME')//缓存的变量
let loadStyle
async function importCss() {
  if (styleDefine === 'dark') {
    loadStyle = await import('./assets/XXXX1.css')
  } else {
    loadStyle = await import('./assets/XXXX2.css')
  }
  return loadStyle
}
importCss()

这种方法通过你的缓存来切换主题,但是主题是切换了,但是需要手动刷新一下,

综上所述 :
触发:

changeCss(event) {
      if (event === '1') {
        this.$store.dispatch('setThemeFun', 'dark')
        localStorage.set(GLOBAL_THEME, 'dark')
      } else {
        this.$store.dispatch('setThemeFun', 'light')
        localStorage.set(GLOBAL_THEME, 'light')
      }
    }

Vuex:

changeGlobalTheme: (state, value) => {
      state.GlobalTheme = value
      if (storage.get(GLOBAL_THEME) !== value) {
        window.location.reload()  //手动刷新才能生效
      }
      localStorage.set(GLOBAL_THEME, value)
      state.theme = value
    }

main.js

const styleDefine = localStorage.get('GLOBAL_THEME')//缓存的变量
let loadStyle
async function importCss() {
  if (styleDefine === 'dark') {
    loadStyle = await import('./assets/XXXX1.css')
  } else {
    loadStyle = await import('./assets/XXXX2.css')
  }
  return loadStyle
}
importCss()

标签:Vue,GLOBAL,loadStyle,value,styleDefine,THEME,localStorage,切换,CSS
来源: https://blog.csdn.net/ps199532/article/details/122698564

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有