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入门学习书籍推荐
Jun 12 Javascript
深入理解JavaScript作用域和作用域链
Oct 21 Javascript
jquery 动态创建元素的方式介绍及应用
Apr 21 Javascript
Ext中下拉列表ComboBox组件store数据格式用法介绍
Jul 15 Javascript
对frameset、frame、iframe的js操作示例代码
Aug 16 Javascript
JavaScript 中的日期和时间及表示标准介绍
Aug 21 Javascript
使用JQuery FancyBox插件实现图片展示特效
Nov 16 Javascript
Bootstrap按钮下拉菜单组件详解
May 10 Javascript
微信小程序 向左滑动删除功能的实现
Mar 10 Javascript
vue中页面跳转拦截器的实现方法
Aug 23 Javascript
node.js之基础加密算法模块crypto详解
Sep 11 Javascript
Vue动态面包屑功能的实现方法
Jul 01 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使用CURL_MULTI实现多线程采集的例子
2014/07/29 PHP
php可应用于面包屑导航的递归寻找家谱树实现方法
2015/02/02 PHP
深入理解PHP中的empty和isset函数
2016/05/26 PHP
PHP简单实现二维数组赋值与遍历功能示例
2017/10/19 PHP
如何用javascript去掉字符串里的所有空格
2007/02/08 Javascript
jquery.combobox中文api和例子,修复了上面的小bug
2011/03/28 Javascript
jquery attr 设定src中含有&(宏)符号问题的解决方法
2011/07/26 Javascript
JS getAttribute和setAttribute(取得和设置属性)的使用介绍
2013/07/10 Javascript
fmt:formatDate的输出格式详解
2014/01/09 Javascript
JQuery替换DOM节点的方法
2015/06/11 Javascript
jQuery实现的自动加载页面功能示例
2016/09/04 Javascript
利用js获取下拉框中所选的值
2016/12/01 Javascript
Vue+jquery实现表格指定列的文字收缩的示例代码
2018/01/09 jQuery
JavaScript实现求最大公共子串的方法
2018/02/03 Javascript
Vue下拉框回显并默认选中随机问题
2018/09/06 Javascript
Vue.js 中的 v-cloak 指令及使用详解
2018/11/19 Javascript
如何使用JavaScript实现栈与队列
2019/06/24 Javascript
你不知道的SpringBoot与Vue部署解决方案
2020/11/09 Javascript
Python爬虫框架Scrapy安装使用步骤
2014/04/01 Python
python实现连接mongodb的方法
2015/05/08 Python
Python3网络爬虫之使用User Agent和代理IP隐藏身份
2017/11/23 Python
python3+PyQt5图形项的自定义和交互 python3实现page Designer应用程序
2020/07/20 Python
python画柱状图--不同颜色并显示数值的方法
2018/12/13 Python
Html5游戏开发之乒乓Ping Pong游戏示例(二)
2013/01/21 HTML / CSS
简单介绍HTML5中audio标签的使用
2015/09/24 HTML / CSS
生物有机护肤品:Aurelia Probiotic Skincare
2018/01/31 全球购物
澳洲的UGG雪地靴超级市场:Uggs.com.au
2020/04/06 全球购物
年度考核自我鉴定
2014/03/19 职场文书
物业管理工作方案
2014/05/10 职场文书
大学生求职信范文
2014/05/24 职场文书
项目经理任命书内容
2014/06/06 职场文书
社团活动总结书
2014/06/27 职场文书
2014中学教师节广播稿
2014/09/10 职场文书
教师三严三实学习心得体会
2014/10/11 职场文书
SQLServer 日期函数大全(小结)
2021/04/08 SQL Server
Windows 11上手初体验:任务栏和开始菜单等迎来大改
2021/11/21 数码科技