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 相关文章推荐
北京奥运官方网站幻灯切换效果flash版打包下载
Jan 30 Javascript
js下用gb2312编码解码实现方法
Dec 31 Javascript
javascript仿qq界面的折叠菜单实现代码
Dec 12 Javascript
JavaScript中获取鼠标位置相关属性总结
Oct 11 Javascript
js网页右下角提示框实例
Oct 14 Javascript
仿百度换肤功能的简单实例代码
Jul 11 Javascript
基于JS实现二维码图片固定在右下角某处并跟随滚动条滚动
Feb 08 Javascript
vue购物车插件编写代码
Nov 27 Javascript
详解开发react应用最好用的脚手架 create-react-app
Apr 24 Javascript
微信小程序用户位置权限的获取方法(拒绝后提醒)
Nov 15 Javascript
通过实例讲解JS如何防抖动
Jun 15 Javascript
微信小程序实现上拉加载功能示例【加载更多数据/触底加载/点击加载更多数据】
May 29 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语法(2)
2006/10/09 PHP
thinkphp中html:list标签传递多个参数实例
2014/10/30 PHP
迪菲-赫尔曼密钥交换(Diffie?Hellman)算法原理和PHP实现版
2015/05/12 PHP
[原创]PHP字符串中插入子字符串方法总结
2016/05/06 PHP
PHP htmlentities()函数用法讲解
2019/02/25 PHP
PHP示例演示发送邮件给某个邮箱
2019/04/03 PHP
ThinkPHP5与单元测试PHPUnit使用详解
2020/02/23 PHP
Javascript面象对象成员、共享成员变量实验
2010/11/19 Javascript
图片onload事件触发问题解决方法
2011/07/31 Javascript
js中window.open()的所有参数详细解析
2014/01/09 Javascript
JavaScript生成随机数的4种自定义函数分享
2015/02/28 Javascript
AngularJS基础 ng-include 指令示例讲解
2016/08/01 Javascript
浅谈jquery采用attr修改form表单enctype不起作用的问题
2016/11/25 Javascript
实现JavaScript高性能的数据存储
2016/12/11 Javascript
JS数组返回去重后数据的方法解析
2017/01/03 Javascript
使用snowfall.jquery.js实现爱心满屏飞的效果
2017/01/05 Javascript
微信小程序 二维码canvas绘制实例详解
2017/01/06 Javascript
微信小程序实现实时圆形进度条的方法示例
2017/02/24 Javascript
JavaScript ES6中const、let与var的对比详解
2017/06/18 Javascript
Node.js利用断言模块assert进行单元测试的方法
2017/09/28 Javascript
vue自定义指令实现方法详解
2019/02/11 Javascript
jquery实现垂直无限轮播的方法分析
2019/07/16 jQuery
JavaScript canvas实现雪花随机动态飘落
2020/02/08 Javascript
JS常用跨域方法实现原理解析
2020/12/09 Javascript
python脚本设置超时机制系统时间的方法
2016/02/21 Python
Python入门之三角函数全解【收藏】
2017/11/08 Python
python读取文本中数据并转化为DataFrame的实例
2018/04/10 Python
Python企业编码生成系统之主程序模块设计详解
2019/07/26 Python
Python实现线性判别分析(LDA)的MATLAB方式
2019/12/09 Python
python实现QQ邮箱发送邮件
2020/03/06 Python
pandas DataFrame运算的实现
2020/06/14 Python
Yahoo-PHP面试题3
2012/01/14 面试题
车间统计员岗位职责
2014/01/05 职场文书
培训主管岗位职责
2014/02/01 职场文书
2014年办公室文秘工作总结
2014/12/09 职场文书
感恩教师主题班会
2015/08/12 职场文书