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 ;
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自定义主题更换皮肤及自定义内容的皮肤跟换的更多相关文章
- VUE基于ElementUI搭建的简易单页后台
一.项目链接 GitHub 地址: https://github.com/imxiaoer/ElementUIAdmin 项目演示地址:https://imxiaoer.github.io/Eleme ...
- 【Vue 2.X】基于ElementUI 实现 dialog弹窗移动效果-自定义指令系列(二)
v-dialogDrag: 弹窗拖拽 使用: <el-dialog XXX v-dialogDrag></el-dialog> Vue.directive('dialogDra ...
- vue基于element-ui的三级CheckBox复选框
最近vue项目需要用到三级CheckBox复选框,需要实现全选反选不确定三种状态.但是element-ui table只支持多选行,并不能支持三级及以上的多选,所以写了这篇技术博文供以后学习使用. 效 ...
- vue基于 element-ui 实现菜单动画效果,任意添加 li 个数均匀撑满 ul 宽度
%)%)%%%))) .) .) .) .) .) .) .) .) .) .) .) .) .) .) .) .% %% %deg);}
- Material使用05 自定义主题、黑夜模式\白天模式切换
需求: 1 不使用materil依赖内建的主题,使用自己创建的主题 2 利用自己创建的主题实现白天模式和黑夜模式 1 自定义主题 1.1 创建自定义主题文件 them.scss // 引入materi ...
- Material使用06 自定义主题、黑夜模式\白天模式切换
需求: 1 不使用materil依赖内建的主题,使用自己创建的主题 2 利用自己创建的主题实现白天模式和黑夜模式 1 自定义主题 1.1 创建自定义主题文件 them.scss // 引入materi ...
- Vue的elementUI实现自定义主题
使用vue开发项目,用到elementUI,根据官网的写法,我们可以自定义主题来适应我们的项目要求,下面来介绍一下两种方法实现的具体步骤,(可以参考官方文档自定义主题官方文档),先说项目中没有使用sc ...
- vue,elementUI切换主题,自定义主题
本文介绍两种elementUI切换主题色的方法 项目示例:http://test.ofoyou.com/theme/ git代码:记得star哦,谢谢 1:官方提供的方法,直接修改scss文件达到修改 ...
- vue中使用element-ui自定义主题后,vue-cli跑不起来了
环境:vue-cli 2.x版本 自己在官网配置了主题并放到了项目中https://element.eleme.cn/#/zh-CN/theme 然后,我的脚手架在我的电脑中休息了几天,就跑不通了呢! ...
随机推荐
- 51NOD 1371填数字
传送门 分析 此题关键在于想出dp[i][j][k]代表考虑到第i行,还能放1的的共有j列,还能放2的共有k行.之后就枚举每一行是没有还是1个1还是2个1还是1个2,然后转移即可. 代码 #inclu ...
- POJ 2686 Traveling by Stagecoach (状压DP)
题意:有一个人从某个城市要到另一个城市, 有n个马车票,相邻的两个城市走的话要消耗掉一个马车票.花费的时间呢,是马车票上有个速率值 ,问最后这个人花费的最短时间是多少. 析:和TSP问题差不多,dp[ ...
- 霍尼韦尔1450g二维码扫码枪中文识别。
USB接口模拟COM串口驱动程序 HSM USB Serial Driver 链接: https://pan.baidu.com/s/1aOV-Fz0OYdQGc5dMmkHzgg 提取码: fwgt ...
- 微信创建带参数二维码,并加上logo
现在需要创建一个场景二维码,除了基础的微信接口创建外,需要加上小logo,思路如下: 1. 首先根据微信的开发文档创建二维码,获取二维码的url,没啥可说的,按照文档来就好了 获取到的二维码就是这么素 ...
- SqlServer学习笔记【暂】
Sql学习笔记,暂时先保存在着,等不忙了再整理成章节,如果其中有问题的,还请各位大神不吝赐教! --------------------------------------所有的数据基于Northwi ...
- spark(1) - ubuntu 下 spark 安装
简单步骤: 前提:hadoop 环境搭建(我的是伪分布式) 1.官网下载spark 2.spark部署(单机模式): (1)解压 (2)移动文件到自定义目录下(同时修改文件名-原来的名字太长) (3) ...
- 关于jquery.extend()的坑:我的数组变成相同元素了?
首先呢我有一个数组,存放了多个json对象.这些json对象的属性有缺失,我设置了一个对象模板来存放默认值 先来看一段代码 var source = [ { name: 'dapianzi', bor ...
- Java基础之对包,类,方法,变量理解(灵感)
包,类,方法,变量 灵感乍现 感觉就如电脑上的各个大小文档一般,只不过名称不同,用法不同,功效不同,就好比你要调用网上的一个图片,这个图片可以是变量,可以是方法,可以是类.你要调用可以把他幻化成接口, ...
- 洛谷P3724 [AH2017/HNOI2017]大佬(决策单调性)
传送门 这个思路很妙诶->这里 以下为了方便,我把自信说成血量好了 虽然表面上看起来每一天有很多种选择,然而我们首先要保证的是不死,然后考虑不死的情况下最多能拿出多少天来进行其他操作.不死可以d ...
- 洛谷P3515 [POI2011]Lightning Conductor(决策单调性)
题意 已知一个长度为n的序列a1,a2,...,an. 对于每个1<=i<=n,找到最小的非负整数p满足 对于任意的j, aj < = ai + p - sqrt(abs(i-j)) ...