zoukankan      html  css  js  c++  java
  • vue-基于elementui自定义主题更换皮肤及自定义内容的皮肤跟换

    参考这篇博客https://blog.csdn.net/young_Emily/article/details/78591261做一遍,加上自己的一些理解

    思路:通过自己上一篇博客https://www.cnblogs.com/aidixie/p/10309862.html做出多个不同的自定义主题,在不通的主体的css样式前加上不同的class名,在页面跟换不同肤色时,通过改变body上的calss来添加不同的样式。

    一、elementui自定义主题更换皮肤

    1.1、给不通的主题添加不同类名

      在src/assets/下创建theme文件夹,放入不同主题

      

      为不同主题中的index.css的每个选择器都前面加上class,例如在00ff22文件夹下的index.css下的每一选择前前面加上custom-00ff22类名(备注,00ff22文件夹有许多css文件,index.css应该包含其他css文件的全部样式。参考博客里没有相关的介绍,搞了好久才发现这个问题。)

      添加方法:gulp-css-wrap工具的使用——[批量为css文件扩展命名空间]

      

      其他主题都这样添加相应的类名。

    1.2、app.vue里引入全部的颜色文件 

      在app.vue一次性全部引入各个主题

      

    1.3、切换皮肤方法

      在src添加文件夹utils,再在里面添加index.js,里面是换肤函数

    //换肤加class函数
    export function toggleClass (element, className) {
        if (!element || !className) {
          return
        }
        element.className = className
    }

      在theme.vue

    <template>
      <div class="hello">
        <el-radio-group v-model="themeValue" @change='changeTheme'>
          <el-radio :label="'custom-00ff22'">绿色(默认)</el-radio>
          <el-radio :label="'custom-4400ff'">蓝色</el-radio>
          <el-radio :label="'custom-cccccc'">灰色杂色</el-radio>
          <el-radio :label="'custom-ff0000'">红色</el-radio>
        </el-radio-group>
        <el-row>
          <el-button>默认按钮</el-button>
          <el-button type="primary">主要按钮</el-button>
          <el-button type="success">成功按钮</el-button>
          <el-button type="info">信息按钮</el-button>
          <el-button type="warning">警告按钮</el-button>
          <el-button type="danger">危险按钮</el-button>
        </el-row>
      </div>
    </template>
    <script>
    import { toggleClass } from '@/utils/index'
    export default {
      data () {
        return {
          themeValue: 'custom-00ff22'
        }
      },
      created(){
        // 设置默认主题
        localStorage.setItem('theme','custom-00ff22')
      },
      mounted(){
        // 设置默认主题
        toggleClass(document.body, localStorage.getItem('theme'));
      },
      methods: {
        //换肤功能。
        changeTheme(val){
          toggleClass(document.body, val);
          localStorage.setItem('theme',val)
        }
      }
    }
    </script>
    <style scoped></style>

     

          

      

          

    二、Vue的自定义内容实现主题颜色切换

      2.1.定义各个颜色不同的css文件,选择前前面都加上相应的custon-颜色 类名

        我们生成对应不同的主题定义不同的css,可以用sass解决,先安装sass各种依赖。

        按照如下在vue2.x中安装sass并配置操作。

        common.scss

        

        mixi.scss

        

        引入scss

        

        theme.vue

        

    <template>
      <div class="hello">
        <el-radio-group v-model="themeValue" @change='changeTheme' style="margin-bottom: 10px;">
          <el-radio :label="'custom-00ff22'">绿色(默认)</el-radio>
          <el-radio :label="'custom-4400ff'">蓝色</el-radio>
          <el-radio :label="'custom-cccccc'">灰色杂色</el-radio>
          <el-radio :label="'custom-ff0000'">红色</el-radio>
        </el-radio-group>
        <el-row>
          <el-button>默认按钮</el-button>
          <el-button type="primary">主要按钮</el-button>
          <el-button type="success">成功按钮</el-button>
          <el-button type="info">信息按钮</el-button>
          <el-button type="warning">警告按钮</el-button>
          <el-button type="danger">危险按钮</el-button>
        </el-row>
        <div class='msg'>
          <span>自定义提示文本内容的皮肤展示</span>
          <span>自定义提示文本内容的皮肤展示</span>
          <span>自定义提示文本内容的皮肤展示</span>
        </div>
      </div>
    </template>
    <script>
    import { toggleClass } from '@/utils/index'
    export default {
      data () {
        return {
          themeValue: 'custom-00ff22'
        }
      },
      created(){
        // 设置默认主题
        localStorage.setItem('theme','custom-00ff22')
      },
      mounted(){
        // 设置默认主题
        toggleClass(document.body, localStorage.getItem('theme'));
      },
      methods: {
        //换肤功能。
        changeTheme(val){
          toggleClass(document.body, val);
          localStorage.setItem('theme',val)
        }
      }
    }
    </script>
    <style lang='scss'>
    .hello{
      .msg{
        margin: 10px 0 0 0 ;
        span{
          display: block;
           80%;
          margin: 0px 10%;
          border-radius: 5px;
          line-height: 32px;
          color: #fff;
          font: {
            size: 13px;
            weight: bold;
            style: italic;
          }
          margin-bottom: 10px;
        }
      }
    }
    </style>

    链接:https://pan.baidu.com/s/1HweLdXrpkT8qolvQEWvwtA
    提取码:mdo1 

        

  • 相关阅读:
    倍福TwinCAT(贝福Beckhoff)基础教程 松下伺服驱动器报错 88怎么办
    倍福TwinCAT(贝福Beckhoff)基础教程 松下伺服驱动器报错 81.0怎么办
    倍福TwinCAT(贝福Beckhoff)基础教程 松下伺服驱动器报错 40怎么办
    倍福TwinCAT(贝福Beckhoff)基础教程 松下伺服驱动器报错 24.0怎么办
    倍福TwinCAT(贝福Beckhoff)基础教程 松下伺服驱动器报错 21.0怎么办
    倍福TwinCAT(贝福Beckhoff)基础教程 松下驱动器试运行提示过速度保护怎么办
    倍福TwinCAT(贝福Beckhoff)基础教程 松下驱动器如何执行绝对值清零
    倍福TwinCAT(贝福Beckhoff)基础教程 松下绝对值驱动器如何做初始化设置
    倍福TwinCAT(贝福Beckhoff)基础教程 松下官方软件开启报错伺服未就绪怎么办
    JAVA Eclipse 启动 Eclipse 弹出“Failed to load the JNI shared library jvm_dll”怎么办
  • 原文地址:https://www.cnblogs.com/aidixie/p/10314612.html
Copyright © 2011-2022 走看看