参考这篇博客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 ;
span{
display: block;
width: %;
margin: 0px %;
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

    

vue-基于elementui自定义主题更换皮肤及自定义内容的皮肤跟换的更多相关文章

  1. VUE基于ElementUI搭建的简易单页后台

    一.项目链接 GitHub 地址: https://github.com/imxiaoer/ElementUIAdmin 项目演示地址:https://imxiaoer.github.io/Eleme ...

  2. 【Vue 2.X】基于ElementUI 实现 dialog弹窗移动效果-自定义指令系列(二)

    v-dialogDrag: 弹窗拖拽 使用: <el-dialog XXX v-dialogDrag></el-dialog> Vue.directive('dialogDra ...

  3. vue基于element-ui的三级CheckBox复选框

    最近vue项目需要用到三级CheckBox复选框,需要实现全选反选不确定三种状态.但是element-ui table只支持多选行,并不能支持三级及以上的多选,所以写了这篇技术博文供以后学习使用. 效 ...

  4. vue基于 element-ui 实现菜单动画效果,任意添加 li 个数均匀撑满 ul 宽度

    %)%)%%%))) .) .) .) .) .) .) .) .) .) .) .) .) .) .) .) .% %% %deg);}

  5. Material使用05 自定义主题、黑夜模式\白天模式切换

    需求: 1 不使用materil依赖内建的主题,使用自己创建的主题 2 利用自己创建的主题实现白天模式和黑夜模式 1 自定义主题 1.1 创建自定义主题文件 them.scss // 引入materi ...

  6. Material使用06 自定义主题、黑夜模式\白天模式切换

    需求: 1 不使用materil依赖内建的主题,使用自己创建的主题 2 利用自己创建的主题实现白天模式和黑夜模式 1 自定义主题 1.1 创建自定义主题文件 them.scss // 引入materi ...

  7. Vue的elementUI实现自定义主题

    使用vue开发项目,用到elementUI,根据官网的写法,我们可以自定义主题来适应我们的项目要求,下面来介绍一下两种方法实现的具体步骤,(可以参考官方文档自定义主题官方文档),先说项目中没有使用sc ...

  8. vue,elementUI切换主题,自定义主题

    本文介绍两种elementUI切换主题色的方法 项目示例:http://test.ofoyou.com/theme/ git代码:记得star哦,谢谢 1:官方提供的方法,直接修改scss文件达到修改 ...

  9. vue中使用element-ui自定义主题后,vue-cli跑不起来了

    环境:vue-cli 2.x版本 自己在官网配置了主题并放到了项目中https://element.eleme.cn/#/zh-CN/theme 然后,我的脚手架在我的电脑中休息了几天,就跑不通了呢! ...

随机推荐

  1. 【摘自张宴的"实战:Nginx"】nginx模块开发

    Nginx的模块不能够像Apache那样动态的加载,所以模块都要预先编译进Nginx的二进制可执行文件中. Nginx的模块有三种角色: 1. Handler(处理模块)     用于处理Http请求 ...

  2. Java-马士兵设计模式学习笔记-工厂模式-抽象工厂模式

    一.概述 1.抽象工厂:当情况是需要产生一系列产品,若需更换产品,则要求一系列产品一起换,且要控制一系列产品的产生过程,此时可考虑抽象工厂模式.例:小明装修屋子,把电视.冰箱都替换掉,他这次需要把电视 ...

  3. 100725B Banal Tickets

    传送门 题目大意 有2*n个位置,这些位置有的已经填上了数,有的还没有(用?表示),现在让你在还没有填上数的填0~9中的任意数,使得前n个数的乘积等于后n个数的乘积,问有多少种方案. 分析 首先这个题 ...

  4. Luogu 4777 【模板】扩展中国剩余定理(EXCRT)

    复习模板. 两两合并同余方程 $x\equiv C_{1} \ (Mod\ P_{1})$ $x\equiv C_{2} \ (Mod\ P_{2})$ 把它写成不定方程的形式: $x = C_{1} ...

  5. Android开发环境搭建及HelloWorld

    在开始Android开发之旅启动之前,首先要搭建环境,然后创建一个简单的HelloWorld.本文的主题如下: 1.环境搭建 1.1.JDK安装 1.2.Eclipse安装 1.3.Android S ...

  6. 一个android dex 转java源码工具

    和dex2jar,smali2java比起来,这个工具至少结果是正确的,前两者对于循环,异常等的处理明显逻辑就是错误的. 该小工具是基于androguard制作,本来是想自己写一个,后来一找居然有现成 ...

  7. recommonmark

    一 简要介绍 recommonmark是个到commonMark文档的兼容性桥,那么什么是commonMark是什么的呢?CommonMark是规范版的markdown,下边是部分commonmark ...

  8. [poj 1185] 炮兵阵地 状压dp 位运算

    Description 司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队.一个N*M的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示),也可能是平原(用&quo ...

  9. win7桌面上的ie图标删不掉怎么办

    一种准确的方法,不要只看着注册表的名字去删,万一删错一切就无法挽回了. 原文链接:http://zhidao.baidu.com/link?url=9H3xX7ScNSUd5NGxfir9napxOH ...

  10. window下 mysql密码忘记

    1.打开MySQL配置文件 my.ini中,添加上skip-grant-tables,可以添加到文件的末尾或者是这添加到[mysqld]的下面. 2.重启mysql 3.这时登录MySQL不再需要验证 ...