赞
踩
目录
方法一:动态修改全局CSS变量
1. 在全局css文件或 app.vue中定义全局CSS变量
- <style>
- :root{
- --theme_bg_color:red
- }
- </style>
2. 使用全局CSS变量定义元素样式
- <style scoped>
- .myTitle{
- background: var(--theme_bg_color);
- }
- </style>
3. 切换主题(修改全局CSS变量)
- changeTheme() {
- document.documentElement.style.setProperty("--theme_bg_color","green");
- }
效果演示代码如下:
- <div>
- <button @click="changeTheme">换肤</button>
- <div class="myTitle">你好</div>
- </div>
方法二:切换主题CSS文件
1. 新建多套主题的css文件,放在 public 文件夹的css文件夹中
public/css/theme_green.css
- .bg {
- background: green;
- }
public/css/theme_red.css
- .bg {
- background: red;
- }
2. 设置默认主题(初始化样式)
src/App.vue
- mounted(){
- let link = document.createElement('link');
- link.type = 'text/css';
- link.id = "theme";
- link.rel = 'stylesheet';
- link.href = './css/theme_red.css';
- document.getElementsByTagName("head")[0].appendChild(link);
- },
3. 切换主题
- changeTheme(){
- document.getElementById('theme').href = './css/theme_green.css'
- }
效果演示代码如下:
- <div>
- <button @click="changeTheme">换肤</button>
- <div class="bg">你好</div>
- </div>
方法三:切换顶级CSS类名
需使用css预处理器,此处以 sass为例
1. 新建主题样式文件
src/assets/styles/theme.scss
- .theme_red{
- .head{
- background: red;
- }
- }
-
- .theme_green{
- .head{
- background: green;
- }
- }
2. 全局引入主题样式文件
src/main.js
- // 全局主题样式
- import './assets/styles/theme.scss'
3. 设置默认主题(初始化样式)
src/App.vue
- mounted() {
- document.getElementById('app').setAttribute('class', 'theme_red')
- },
4. 切换主题
- changeTheme() {
- document.getElementById('app').setAttribute('class', 'theme_green')
- }
效果演示代码如下:
- <div>
- <button @click="changeTheme">换肤</button>
- <div class="head">你好</div>
- </div>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。