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 相关文章推荐
主页面中的两个iframe实现鼠标拖动改变其大小
Apr 16 Javascript
js 高效去除数组重复元素示例代码
Dec 19 Javascript
node.js中的fs.rmdirSync方法使用说明
Dec 16 Javascript
谈谈js中的prototype及prototype属性解释和常用方法
Nov 25 Javascript
理解javascript封装
Feb 23 Javascript
javascript入门之string对象【新手必看】
Nov 22 Javascript
Bootstrap3 模态框使用实例
Feb 22 Javascript
springmvc接收jquery提交的数组数据代码分享
Oct 28 jQuery
vue的一个分页组件的示例代码
Dec 25 Javascript
基于js文件加载优化(详解)
Jan 03 Javascript
实例分析vue循环列表动态数据的处理方法
Sep 28 Javascript
javascript中的with语句学习笔记及用法
Feb 17 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
swfupload 多文件上传实现代码
2008/08/27 PHP
php foreach正序倒序输出示例代码
2014/07/01 PHP
推荐25款php中非常有用的类库
2014/09/29 PHP
PHP中使用curl入门教程
2015/07/02 PHP
js window.onload 加载多个函数和追加函数详解
2014/01/08 Javascript
jquery选择器排除某个DOM元素的方法(实例演示)
2014/04/25 Javascript
JS案例分享之金额小写转大写
2014/05/15 Javascript
jqGrid读取选择的多行的某个属性代码
2014/05/18 Javascript
Javascript 实现图片无缝滚动
2014/12/19 Javascript
JS+CSS实现Li列表隔行换色效果的方法
2015/02/16 Javascript
JS延时提示框实现方法详解
2015/11/26 Javascript
在Html中使用Requirejs进行模块化开发实例详解
2016/04/15 Javascript
异步加载JS、CSS代码(推荐)
2016/06/15 Javascript
移动端H5开发 Turn.js实现很棒的翻书效果
2016/06/20 Javascript
JS 循环li添加点击事件 (闭包的应用)
2016/12/10 Javascript
JavaScript中的一些隐式转换和总结(推荐)
2017/12/22 Javascript
详解webpack loader和plugin编写
2018/10/12 Javascript
Webpack按需加载打包chunk命名的方法
2019/09/22 Javascript
Python爬取Coursera课程资源的详细过程
2014/11/04 Python
Python中字典的setdefault()方法教程
2017/02/07 Python
Django+JS 实现点击头像即可更改头像的方法示例
2018/12/26 Python
利用python实现在微信群刷屏的方法
2019/02/21 Python
Django使用redis缓存服务器的实现代码示例
2019/04/28 Python
python将数组n等分的实例
2019/12/02 Python
python爬虫scrapy基本使用超详细教程
2021/02/20 Python
华为俄罗斯官方网上商城:购买Huawei手机和平板
2017/04/21 全球购物
公务员个人自我评价分享
2013/11/06 职场文书
合作意向书范本
2014/03/31 职场文书
幼儿园大班毕业教师寄语
2014/04/03 职场文书
品牌服务方案
2014/06/03 职场文书
优秀三好学生事迹材料
2014/08/31 职场文书
11.9消防日宣传标语
2014/10/08 职场文书
县人大领导班子四风对照检查材料思想汇报
2014/10/09 职场文书
读后感作文评语
2014/12/25 职场文书
如何写一份具有法律效力的借款协议书?
2019/07/02 职场文书
导游词之南京汤山温泉
2019/11/26 职场文书