当前位置:   article > 正文

vue 一键换肤(切换主题样式)_vue 换肤

vue 换肤

目录

方法一:动态修改全局CSS变量 

方法二:切换主题CSS文件

方法三:切换顶级CSS类名


方法一:动态修改全局CSS变量 

1. 在全局css文件或 app.vue中定义全局CSS变量

  1. <style>
  2. :root{
  3. --theme_bg_color:red
  4. }
  5. </style>

2. 使用全局CSS变量定义元素样式

  1. <style scoped>
  2. .myTitle{
  3. background: var(--theme_bg_color);
  4. }
  5. </style>

3.  切换主题(修改全局CSS变量)

  1. changeTheme() {
  2. document.documentElement.style.setProperty("--theme_bg_color","green");
  3. }

效果演示代码如下:

  1. <div>
  2. <button @click="changeTheme">换肤</button>
  3. <div class="myTitle">你好</div>
  4. </div>

方法二:切换主题CSS文件

1. 新建多套主题的css文件,放在 public 文件夹的css文件夹中

public/css/theme_green.css

  1. .bg {
  2. background: green;
  3. }

public/css/theme_red.css

  1. .bg {
  2. background: red;
  3. }

2. 设置默认主题(初始化样式)

src/App.vue

  1. mounted(){
  2. let link = document.createElement('link');
  3. link.type = 'text/css';
  4. link.id = "theme";
  5. link.rel = 'stylesheet';
  6. link.href = './css/theme_red.css';
  7. document.getElementsByTagName("head")[0].appendChild(link);
  8. },

3. 切换主题

  1. changeTheme(){
  2. document.getElementById('theme').href = './css/theme_green.css'
  3. }

效果演示代码如下:

  1. <div>
  2. <button @click="changeTheme">换肤</button>
  3. <div class="bg">你好</div>
  4. </div>

方法三:切换顶级CSS类名

需使用css预处理器,此处以 sass为例

1. 新建主题样式文件

src/assets/styles/theme.scss

  1. .theme_red{
  2. .head{
  3. background: red;
  4. }
  5. }
  6. .theme_green{
  7. .head{
  8. background: green;
  9. }
  10. }

2. 全局引入主题样式文件

src/main.js

  1. // 全局主题样式
  2. import './assets/styles/theme.scss'

3. 设置默认主题(初始化样式)

src/App.vue

  1. mounted() {
  2. document.getElementById('app').setAttribute('class', 'theme_red')
  3. },

4. 切换主题

  1. changeTheme() {
  2. document.getElementById('app').setAttribute('class', 'theme_green')
  3. }

效果演示代码如下:

  1. <div>
  2. <button @click="changeTheme">换肤</button>
  3. <div class="head">你好</div>
  4. </div>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/133534
推荐阅读
相关标签
  

闽ICP备14008679号