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 相关文章推荐
比较全面的event对像在IE与FF中的区别 推荐
Sep 21 Javascript
JavaScript中链式调用之研习
Apr 07 Javascript
Event altKey,ctrlKey,shiftKey属性解析
Dec 18 Javascript
js图片实时加载提供网页打开速度
Sep 11 Javascript
5种处理js跨域问题方法汇总
Dec 04 Javascript
jQuery EasyUI封装简化操作
Sep 18 Javascript
angularjs定时任务的设置与清除示例
Jun 02 Javascript
解决JS外部文件中文注释出现乱码问题
Jul 09 Javascript
node.js部署之启动后台运行forever的方法
May 23 Javascript
node.js实现带进度条的多文件上传
Mar 27 Javascript
简单分析js中的this的原理
Aug 31 Javascript
vue使用video插件vue-video-player详解
Oct 23 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
浅谈php安全性需要注意的几点事项
2014/07/17 PHP
PHP实现的数组和XML文件相互转换功能示例
2018/03/15 PHP
jQuery 前的按键判断代码
2010/03/19 Javascript
jquery ajax学习笔记2 使用XMLHttpRequest对象的responseXML
2011/10/16 Javascript
JavaScript中“+”的陷阱深刻理解
2012/12/04 Javascript
日历查询的算法 如何计算某一天是星期几
2012/12/12 Javascript
js获取RadioButtonList的Value/Text及选中值等信息实现代码
2013/03/05 Javascript
javascript中Date对象的getDay方法使用指南
2014/12/22 Javascript
修改或扩展jQuery原生方法的代码实例
2015/01/13 Javascript
JS动态增删表格行的方法
2016/03/03 Javascript
bootstrap table插件的分页与checkbox使用详解
2017/07/23 Javascript
jQuery实现的form转json经典示例
2017/10/10 jQuery
jQuery中将json数据显示到页面表格的方法
2018/05/27 jQuery
详解Vue路由自动注入实践
2019/04/17 Javascript
如何使用webpack打包一个库library的方法步骤
2019/12/18 Javascript
mustache.js实现首页元件动态渲染的示例代码
2020/12/28 Javascript
[18:16]sakonoko 2017年卡尔集锦
2018/02/06 DOTA
python图像处理之反色实现方法
2015/05/30 Python
python实现redis三种cas事务操作
2017/12/19 Python
python如何重载模块实例解析
2018/01/25 Python
python2与python3共存问题的解决方法
2018/09/18 Python
Django发送邮件和itsdangerous模块的配合使用解析
2019/08/10 Python
基于python实现蓝牙通信代码实例
2019/11/19 Python
TensorFlow绘制loss/accuracy曲线的实例
2020/01/21 Python
python爬虫scrapy框架之增量式爬虫的示例代码
2021/02/26 Python
canvas实现飞机打怪兽射击小游戏的示例代码
2018/07/09 HTML / CSS
员工拾金不昧表扬信
2014/01/09 职场文书
电子银行营销方案
2014/02/22 职场文书
商务日语专业毕业生自荐信
2014/03/27 职场文书
英语专业毕业生求职信
2014/05/24 职场文书
天地会口号
2014/06/17 职场文书
大学第二课堂活动总结
2014/07/08 职场文书
幼儿园新生开学寄语
2015/05/27 职场文书
卢旺达饭店观后感
2015/06/05 职场文书
暑期辅导班宣传单
2015/07/14 职场文书