思路:

    1. 生成不同的css颜色文件,每个文件内部命名前加上.custom-颜色值做命名空间。
    2. 然后app.vue里引入全部的颜色文件。
    3. 用户点击某颜色,就在body加上class:custom-00a597 
      这样通过body的class改变就能实现真正使用不同的css文件。

1.将css文件里面加上特定的.XX类名 比如

如颜色值为#00a597的css文件 ,我里面的每个选择器都加上了.custom-00a597 
颜色值为#0000ff的css文件,加上了.custom-0000ff 
怎么批量加呢? 
这里使用gulp-css-wrap这个神器 

2、gulp-css-wrap工具的使用——[批量为css文件扩展命名空间]

1.搭建gulp环境
搭建环境在项目的代码环境中搭建。

//1.安装gulp:
npm install gulp

//2.安装gulp-clean-css
npm install gulp-clean-css

//3.安装gulp-css-wrap
npm install gulp-css-wrap

2.在项目根目录下创建一个名为 gulpfile.js 的文件:
// gulpfile.js
var path = require('path')
var gulp = require('gulp')
var cleanCSS = require('gulp-clean-css')
var cssWrap = require('gulp-css-wrap')
gulp.task('css-wrap', function () {
return gulp.src(path.resolve('./theme/index.css'))
/* 找需要添加命名空间的css文件,支持正则表达式 */
.pipe(cssWrap({
selector: '.custom-1b1e24' /* 添加的命名空间 */
}))
.pipe(cleanCSS())
.pipe(gulp.dest('src/assets/css/theme/1b1e24')) /* 存放的目录 */
})

3.执行gulp输出
//命令行
gulp css-wrap

3、 使用命令行主题工具生成css文件

1、使用命令行主题工具生成css文件
2、 用vue-cli安装一个新项目:
3、 安装elementUI及sass-loader,node-sass
(项目中使用scss编写需要依赖的插件)

//安装elementui
npm i element-ui -S
//安装sass
npm i sass-loader node-sass -D

4、 安装elementui的自定义主题工具
//首先安装主题工具
npm i element-theme -g

//然后安装chalk主题
npm i element-theme-chalk -D

5、 初始化变量文件

et -i [可以自定义变量文件,默认为element-variables.scss]

这时根目录下会产生element-variables.scss(或自定义的文件)

6、修改变量

直接编辑 element-variables.scss 文件,例如修改主题色为自己所需要的颜色(如: 紫色(purple))

$--color-primary: purple

7、编译主题

et

编译完之后会在根目录生成theme的文件夹.

只需要引入theme/index.css即可

8、引入自定义主题

将编译好的主题文件引入项目(编译的文件默认在根目录下的theme文件下,也可以通过 -o 参数指定打包目录),在入口文件main.js中引入

import '../theme/index.css'
import ElementUI from 'element-ui'
import Vue from 'vue'

Vue.use(ElementUI)

9、测试是否成功

<el-button type="primary">主要按钮</el-button>

4、动态切换主题

1、将修改好的不同css颜色文件放到一个文件夹

1、换肤内容

5、动态切换逻辑

当前颜色值存在vuex里。修改或拿取都通过vuex管理

用户点击颜色值v-model绑定 

 app.vue 引入common.scss 

效果

vue-基于elementui换肤的更多相关文章

  1. vue2.0-基于elementui换肤[自定义主题]

    0. 直接上 预览链接 vue2.0-基于elementui换肤[自定义主题] 1. 项目增加主题组件 在项目的src/components下添加skin文件夹 skin文件获取地址 2. 项目增加自 ...

  2. vue+ element 动态换肤

    转至 https://www.cnblogs.com/dengqichang/p/10364455.html 一.搭建好项目的环境. 二.根据ElementUI官网的自定义主题(http://elem ...

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

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

  4. vue项目网站换肤

    由于我网站不是的单色,换动的样式有点多,所以我只能通过后端传给我的不同的皮肤类型,来控制不同的样式文件 在网上查了一堆,每一个有用的 if(store.getters.infoType==1){ re ...

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

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

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

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

  7. 基于ElementUI的网站换主题的一些思考与实现

    前言 web应用程序,切换主题,给其换肤,是一个比较常见的需求. 如何能快速的切换主题色?(只有固定的一种皮肤) 如果又想把主题色切换为以前的呢?(有多种可切换的皮肤) 该以何种方式编写标签的css属 ...

  8. element-ui 动态换肤

    1.在安装好 element-ui@2.x 以后,首先安装sass-loader npm i sass-loader node-sass -D 2.安装 element-theme npm i ele ...

  9. VS中基于对话框的MFC利用换肤改变边框颜色及格式

    第一版本: http://ishare.iask.sina.com.cn/f/13836420.html?from=like 2. http://www.cnblogs.com/phinecos/ar ...

随机推荐

  1. Redis安装和实际应用

    上次介绍了Redis的来龙去脉以及相关一些情况,点击回顾<深入浅出Redis>,接下来我们再讲讲Redis的安装和实际应用. 一.Redis的安装 下载安装包,redis-3.2.9.ta ...

  2. Python学习笔记【第六篇】:迭代器、生成器、高阶函数、装饰器

    迭代器 迭代器是访问集合元素的一种方式,迭代器从对象的第一个元素开始访问,知道所有元素被访问完成.迭代器只能往前访问,不能通过索引访问. 类型内部使用__iter__()方法转为迭代器,使用__nex ...

  3. UC手机浏览器js加入收藏夹

    概述 对于某些网站来说,让用户一键把网页加入收藏夹的设计是非常棒的,它能提醒用户把网页加入收藏夹,从而增加用户的回访率,使网站获得更多的流量. 在PC端,只有ie和ff支持用js把网页加入收藏夹的操作 ...

  4. nginx服务器入门知识汇总

    IP-hash 就是根据IP进行hash计算,然后分配到对应的服务器,好处就是不用session同步,固定IP会固定访问一台服务器,缺点就是恶意攻击,会造成某台服务器压垮.提供的服务不同,面向的地区不 ...

  5. Error running 'Unnamed': Address localhost:1099 is already in use

    当使用idea运行项目时,出现‘Error running 'Unnamed': Address localhost:1099 is already in use’. 解决方案: 1.打开任务管理器 ...

  6. Python编程Day3—基本运算符、数据类型

    一.基本运算符 1.算数运算 print(10/3) print(10//3) print(10%3) print(10**3) 2.比较运算 print(10==10) print(10!=10) ...

  7. odoo开发笔记 -- many2one搜索更多增加默认过滤条件

    没加过滤条件的时候,效果如下,点击下拉框,搜索更多出现所有模型下的模板: 改进方法(增加默认过滤条件,显示指定模型下的内容): class IrCloudReport(models.Model): _ ...

  8. Java提高(5)---map集合排序

    map集合排序 这篇文章讲的不仅仅是map排序,比如把对象按某一属性排序,它都可以解决这些问题. 比如,有N个对象,每个对象有个属性就是成绩,成绩分:优秀,良好,合格.那我们如何按照成绩的好坏进行排序 ...

  9. CDlinux系统破解无线wifi

    CDlinux是破解无线wifi信号的很好用的系统.它就像一个PE,不过它是基于Linux内核的微型系统.里面的破解工具很齐全,既有传统的抓包工具,也有最新的PIN码破解软件,而且针对windows用 ...

  10. CentOS7 配置FTP服务器

    1.安装vsftpd yum -y install vsftpd 2.在firewalld中添加规则 为确保成功 先启动firewalld服务 systemctl enable firewalld s ...