vue在线动态切换主题色方案


Posted in Javascript onMarch 26, 2020

主要原理是利用webpack插件webpack-theme-color-replacer提取相关颜色css然后根据配置动态生成替换的css

具体实现步骤如下:

1.添加webpack插件,新建文件webpack/themePlugin.js

const ThemeColorReplacer = require('webpack-theme-color-replacer')
const forElementUI = require('webpack-theme-color-replacer/forElementUI')
const config = require('../src/config/appConfig')
module.exports = new ThemeColorReplacer({
  fileName: 'css/theme-colors.[contenthash:8].css',
  matchColors: [
    ...forElementUI.getElementUISeries(config.themeColor), //element-ui主色系列
    // '#0cdd3a', //自定义颜色
  ],
  changeSelector: forElementUI.changeSelector,
  isJsUgly: process.env.NODE_ENV !== 'development',
  // injectCss: false,
  // resolveCss(resultCss) { // optional. Resolve result css code as you wish.
  //   return resultCss + youCssCode
  // }
})

matchColors数组中可配置多个自定义要替换的主题色

2.在vue.config.js中添加这个插件

const themePlugin=require('./webpack/themePlugin');
module.exports = {
 configureWebpack: {
  plugins: [
        themePlugin
       ]
  }
 }

3.新建文件themeColorClient.js

import client from 'webpack-theme-color-replacer/client'
import forElementUI from 'webpack-theme-color-replacer/forElementUI'
import appConfig from '@/config/appConfig'
export let curColor = appConfig.themeColor

// 动态切换主题色
export function changeThemeColor(newColor) {
  var options = {
    newColors: [...forElementUI.getElementUISeries(newColor)],
  }
  return client.changer.changeColor(options, Promise)
    .then(() => {
      curColor = newColor
      localStorage.setItem('theme_color', curColor)
    });
}

export function initThemeColor() {
  const savedColor = localStorage.getItem('theme_color')
  if (savedColor) {
    curColor = savedColor
    changeThemeColor(savedColor)
  }
}

4.在需要的时候调用 initThemeColor初始化颜色 changeThemeColor改变主题颜色

import { initThemeColor,changeThemeColor } from './utils/themeColorClient'
initThemeColor()
changeThemeColor('#F56C6C')//传入颜色格式应该为十六进制颜色值,'red'类似颜色暂不支持

具体细节请参考https://github.com/hzsrc/vue-element-ui-scaffold-webpack4

到此这篇关于vue在线动态切换主题色方案的文章就介绍到这了,更多相关vue 动态切换主题内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
解析javascript 浏览器关闭事件
Jul 08 Javascript
javascript跨浏览器的属性判断方法
Mar 16 Javascript
jQuery 获取/设置/删除DOM元素的属性以a元素为例
May 23 Javascript
jquery实现表单输入时提示文字滑动向上效果
Aug 10 Javascript
javascript实现文字无缝滚动
Dec 27 Javascript
原生js实现轮播图的示例代码
Feb 20 Javascript
angularjs中使用ng-bind-html和ng-include的实例
Apr 28 Javascript
VUE中使用Vue-resource完成交互
Jul 21 Javascript
聊聊JS动画库 Velocity.js的使用
Mar 13 Javascript
解决vue A对象赋值给B对象,修改B属性会影响到A的问题
Sep 25 Javascript
js中的reduce()函数讲解
Jan 18 Javascript
JavaScript RegExp 对象用法详解
Sep 24 Javascript
javascript实现简单搜索功能
Mar 26 #Javascript
jQuery实现html可联动的百分比进度条
Mar 26 #jQuery
vue+element 实现商城主题开发的示例代码
Mar 26 #Javascript
js实现带箭头的进度流程
Mar 26 #Javascript
Bootstrap实现前端登录页面带验证码功能完整示例
Mar 26 #Javascript
jquery css实现流程进度条
Mar 26 #jQuery
jquery实现上传文件进度条
Mar 26 #jQuery
You might like
PHP数据库开发知多少
2006/10/09 PHP
LotusPhp笔记之:Logger组件的使用方法
2013/05/06 PHP
php输出1000以内质数(素数)示例
2014/02/16 PHP
php数组比较实现查找连续数的方法
2015/07/29 PHP
php实现的mysqldb读写分离操作类示例
2017/02/07 PHP
PHP封装的mysqli数据库操作类示例
2019/02/16 PHP
基于JQuery.timer插件实现一个计时器
2010/04/25 Javascript
jQuery的12招常用技巧分享
2011/08/08 Javascript
js显示时间 js显示最后修改时间
2013/01/02 Javascript
jQuery使用removeClass方法删除元素指定Class的方法
2015/03/26 Javascript
js 动态生成json对象、时时更新json对象的方法
2016/12/02 Javascript
Node.js中.pfx后缀文件的处理方法
2017/03/10 Javascript
jQuery实现动态添加、删除按钮及input输入框的方法
2017/04/27 jQuery
bootstrap插件treeview实现全选父节点下所有子节点和反选功能
2017/07/21 Javascript
再谈Angular4 脏值检测(性能优化)
2018/04/23 Javascript
Layui实现带查询条件的分页
2019/07/27 Javascript
vue-devtools的安装和使用步骤详解
2019/10/17 Javascript
简单的连接MySQL与Python的Bottle框架的方法
2015/04/30 Python
如何在python中使用selenium的示例
2017/12/26 Python
Zookeeper接口kazoo实例解析
2018/01/22 Python
python 巧用正则寻找字符串中的特定字符的位置方法
2018/05/02 Python
numpy.std() 计算矩阵标准差的方法
2018/07/11 Python
python实现ip地址的包含关系判断
2020/02/07 Python
jupyter实现重新加载模块
2020/04/16 Python
纯CSS3实现自定义Tooltip边框涂鸦风格的教程
2014/11/05 HTML / CSS
员工自我鉴定范文
2013/10/06 职场文书
经贸专业毕业生求职信范文
2014/05/01 职场文书
中文专业毕业生自荐信
2014/05/24 职场文书
暑期教师培训方案
2014/06/07 职场文书
考试作弊被抓检讨书
2014/10/02 职场文书
2014年中学生检讨书大全
2014/10/09 职场文书
党员自评材料范文
2014/12/17 职场文书
一百条裙子读书笔记
2015/07/01 职场文书
2016学校元旦晚会经典开场白台词
2015/12/03 职场文书
Java 中的 Unsafe 魔法类的作用大全
2021/06/26 Java/Android
Mysql如何查看是否使用到索引
2022/12/24 MySQL