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 相关文章推荐
JS面向对象编程 for Cookie
Sep 19 Javascript
javascript学习笔记(八) js内置对象
Jun 19 Javascript
replace()方法查找字符使用示例
Oct 28 Javascript
jQuery实现异步获取json数据的2种方式
Aug 29 Javascript
javascript编程异常处理实例小结
Nov 30 Javascript
JQuery导航菜单选择特效
Apr 11 Javascript
简单掌握JavaScript中const声明常量与变量的用法
May 21 Javascript
vuejs2.0实现分页组件使用$emit进行事件监听数据传递的方法
Feb 22 Javascript
jQuery实现的事件绑定功能基本示例
Oct 11 jQuery
vue-router实现编程式导航的代码实例
Jan 19 Javascript
JS实现将对象转化为数组的方法分析
Jan 21 Javascript
基于vue3.0.1beta搭建仿京东的电商H5项目
May 06 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
苏联队长,苏联超人蝙蝠侠,这些登场的“山寨”英雄真的很严肃
2020/04/09 欧美动漫
php下正则来匹配dede模板标签的代码
2010/08/21 PHP
php调用Google translate_tts api实现代码
2013/08/07 PHP
ThinkPHP多表联合查询的常用方法
2020/03/24 PHP
PHP支付系统设计与典型案例分享
2016/08/02 PHP
PHP实现验证码校验功能
2017/11/16 PHP
ThinkPHP5.1的权限控制怎么写?分享一个AUTH权限控制
2021/03/09 PHP
jquery.lazyload  实现图片延迟加载jquery插件
2010/02/06 Javascript
jQuery源码分析-05异步队列 Deferred 使用介绍
2011/11/14 Javascript
onmouseover和onmouseout的一些问题思考
2013/08/14 Javascript
JS点击链接后慢慢展开隐藏着图片的方法
2015/02/17 Javascript
自己动手写的javascript前端等待控件
2015/10/30 Javascript
js中数组结合字符串实现查找(屏蔽广告判断url等)
2016/03/30 Javascript
深入理解React中es6创建组件this的方法
2016/08/29 Javascript
利用bootstrapValidator验证UEditor
2016/09/14 Javascript
js排序与重组的实例讲解
2017/08/28 Javascript
Vue 按键修饰符处理事件的方法
2018/05/04 Javascript
详解基于vue的服务端渲染框架NUXT
2018/06/20 Javascript
总结4个方面优化Vue项目
2019/02/11 Javascript
详解ES6 CLASS在微信小程序中的应用实例
2020/04/24 Javascript
带你认识Django
2019/01/15 Python
Django外键(ForeignKey)操作以及related_name的作用详解
2019/07/29 Python
使用 Django Highcharts 实现数据可视化过程解析
2019/07/31 Python
如何基于python测量代码运行时间
2019/12/25 Python
Spartoo英国:欧洲最大的网上鞋店
2016/09/13 全球购物
花园仓库建筑:Garden Buildings Direct
2018/02/16 全球购物
荷兰电脑专场:Paradigit
2018/05/05 全球购物
Structs界面控制层技术
2013/10/11 面试题
空乘英文求职信
2014/04/13 职场文书
班级学习雷锋活动总结
2014/07/04 职场文书
群众路线教育实践活动自我剖析思想汇报
2014/10/04 职场文书
导游词之澳门玫瑰圣母堂
2019/12/03 职场文书
浅谈移动端中的视口(viewport)的具体使用
2021/04/13 HTML / CSS
如何解决springcloud feign 首次调用100%失败的问题
2021/06/23 Java/Android
实例详解Python的进程,线程和协程
2022/03/13 Python
游戏《我的世界》澄清Xbox版暂无计划加入光追
2022/04/03 其他游戏