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 相关文章推荐
JQuery为textarea添加maxlength属性的代码
Apr 07 Javascript
jquery自定义类似$.ajax()的方法实现代码
Aug 13 Javascript
在javascript中执行任意html代码的方法示例解读
Dec 25 Javascript
JavaScript实现动画打开半透明提示层的方法
Apr 21 Javascript
JS中跨页面调用变量和函数的方法(例如a.js 和 b.js中互相调用)
Nov 01 Javascript
vue实现图书管理demo详解
Oct 17 Javascript
Vue实现动态创建和删除数据的方法
Mar 17 Javascript
vue返回上一页面时回到原先滚动的位置的方法
Dec 20 Javascript
vue 父组件中调用子组件函数的方法
Jun 06 Javascript
js获取url页面id,也就是最后的数字文件名
Sep 25 Javascript
node.js通过Sequelize 连接MySQL的方法
Dec 28 Javascript
vue-router中hash模式与history模式的区别
Jun 23 Vue.js
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
在windows服务器开启php的gd库phpinfo中未发现
2013/01/13 PHP
在 PHP 和 Laravel 中使用 Traits的方法
2019/11/13 PHP
js 新浪的一个图片播放图片轮换效果代码
2008/07/15 Javascript
通过jQuery打造支持汉字,拼音,英文快速定位查询的超级select插件
2010/06/18 Javascript
js网页侧边随页面滚动广告效果实现
2011/04/14 Javascript
js常用代码段整理
2011/11/30 Javascript
jquery插件制作 提示框插件实现代码
2012/08/17 Javascript
Javascript单元测试框架QUnitjs详细介绍
2014/05/08 Javascript
javascript实现获取浏览器版本、浏览器类型
2015/12/02 Javascript
jQuery的框架介绍
2016/05/11 Javascript
详解用函数式编程对JavaScript进行断舍离
2017/09/18 Javascript
JS 中使用Promise 实现红绿灯实例代码(demo)
2017/10/20 Javascript
解决VUE双向绑定失效的问题
2019/10/29 Javascript
web.py中调用文件夹内模板的方法
2014/08/26 Python
Python中一些自然语言工具的使用的入门教程
2015/04/13 Python
python3制作捧腹网段子页爬虫
2017/02/12 Python
Python使用django搭建web开发环境
2017/06/09 Python
使用C++扩展Python的功能详解
2018/01/12 Python
Python使用Django实现博客系统完整版
2020/09/29 Python
python实现基于信息增益的决策树归纳
2018/12/18 Python
selenium+python环境配置教程详解
2019/05/28 Python
Python定时任务APScheduler原理及实例解析
2020/05/30 Python
Python 如何展开嵌套的序列
2020/08/01 Python
美国最大的珠宝商之一:Littman Jewelers
2016/11/13 全球购物
SkinCeuticals官网:美国药妆品牌
2018/04/19 全球购物
施华洛世奇巴西官网:SWAROVSKI巴西
2019/12/03 全球购物
介绍JAVA 中的Collection FrameWork(及如何写自己的数据结构)
2014/10/31 面试题
平安工地建设方案
2014/05/06 职场文书
团干部培训方案
2014/06/03 职场文书
大连星海广场导游词
2015/02/10 职场文书
酒店财务部岗位职责
2015/04/14 职场文书
中秋节作文(五年级)之关于月亮
2019/09/11 职场文书
MySQL中几种插入和批量语句实例详解
2021/09/14 MySQL
实例详解Python的进程,线程和协程
2022/03/13 Python
nginx七层负载均衡配置详解
2022/07/15 Servers
GO中sync包自由控制并发示例详解
2022/08/05 Golang