当前位置:   article > 正文

前端实现一键换肤_一个项目换整体皮肤前端怎么做

一个项目换整体皮肤前端怎么做

一、 Vue项目实现换肤 

   方法一:动态修改全局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文件夹中

  1. public/css/theme_green.css
  2. .bg {
  3.     background: green;
  4. }
  5. public/css/theme_red.css
  6. .bg {
  7.     background: red;
  8. }


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

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


        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. 新建主题样式文件

  1. src/assets/styles/theme.scss
  2. .theme_red{
  3.   .head{
  4.     background: red;
  5.   }
  6. }
  7.  
  8. .theme_green{
  9.   .head{
  10.     background: green;
  11.   }
  12. }


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

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


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

  1. src/App.vue
  2. mounted() {
  3.     document.getElementById('app').setAttribute('class', 'theme_red')
  4. },


        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/2023面试高手/article/detail/133506?site
推荐阅读
相关标签
  

闽ICP备14008679号