vue2实现自定义主题webpack-theme-color-replacer

这篇具有很好参考价值的文章主要介绍了vue2实现自定义主题webpack-theme-color-replacer。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

需求:根据element的自定义主题色,之后改变element的全局所有颜色,解决页面刷新后主题色失效问题,这个需要把颜色存入到浏览器的存储中,如果换个浏览器就得重新选择了哈,如果需要在不同的浏览器保持一致的主题,需要跟后端沟通

之前还写过一个简单的,有需要的可以去看:vue实现element-ui自定义主题色切换(简单版)_element主题切换_请叫我欧皇i的博客-CSDN博客

效果如下:

vue2实现自定义主题webpack-theme-color-replacer,vue-插件,webpack,前端,node.js

1.下载颜色插件

我下的是1.4.6版本,最好下载的版本一致吧,不然报错了我也没办法

npm install webpack-theme-color-replacer@1.4.6

2.建个js文件themeColorClient.js

直接复制粘贴以下代码

import client from 'webpack-theme-color-replacer/client'
import forElementUI from 'webpack-theme-color-replacer/forElementUI'
// 注意自己项目里的引入路径

export let curColor = '#409EFF'

// 动态切换主题色
export function changeThemeColor(newColor) {
  var options = {
    newColors: [...forElementUI.getElementUISeries(newColor), '#ff0000', '#ffff00']
  }
  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)
  }
}

3.在main.js文件导入

保证每次刷新数据还在

import { initThemeColor } from './plugins/themeColorClient'
initThemeColor()

4.颜色选择器

<template>
  <el-color-picker v-model="mainColor" size="small" @change="changeColor" />
</template>

<script>
import { changeThemeColor, curColor } from "@/plugins/themeColorClient";
export default {
  name: "d2-header-color",
  data() {
    return {
      mainColor: curColor,
      predefine: [
        "#ff4500",
        "#ff8c00",
        "#ffd700",
        "#90ee90",
        "#00ced1",
        "#1e90ff",
        "#c71585",
      ],
    };
  },
  methods: {
    changeColor(newColor) {
      console.log(newColor, "颜色");
      changeThemeColor(newColor)
        .then((t) => console.log("123465"))
        .catch((err) => console.log(err, "567"));
      //.then(t => this.$x.toast.success('主题色切换成功~'))
    },
  },
};
</script>

5.在vue.config.js中配置

const ThemeColorReplacer = require('webpack-theme-color-replacer')
const forElementUI = require('webpack-theme-color-replacer/forElementUI')
module.exports = {
  chainWebpack: config => {
       // 自定义主题色
    config
      .plugin('theme-color-replacer')
      .use(ThemeColorReplacer, [{
        fileName: 'style/theme-colors.[contenthash:8].css',
        matchColors: [
          ...forElementUI.getElementUISeries(process.env.VUE_APP_ELEMENT_COLOR), // Element-ui主色系列
          '#0cdd3a', // 自定义颜色
          '#c655dd'
        ],
        changeSelector: forElementUI.changeSelector,
        // 解决history模式下路由跳转样式不生效问题
        injectCss: true,
        isJsUgly: process.env.NODE_ENV === 'production' ? true : undefined
      }])
}
    
}

6.如果非element的组件需要使用全局自定义样式可以如下设置

在公共的scss样式文件下添加如下代码

// 全局更改样式,必须是--navWidth,可以看theme文件
//--navWidth为变量,必须以--开头,否则其它页面使用这个变量不会生效
$mainBgc: var(--navWidth, #409eff);

 之后在需要全局样式下添加$mainBgc即可

.box{
color:$mainBgc;
}

这样就可以实现了,文章到此结束,希望对你有所帮助~有不懂的可以在评论区联系我文章来源地址https://www.toymoban.com/news/detail-733199.html

到了这里,关于vue2实现自定义主题webpack-theme-color-replacer的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【分页表格】Vue2 + Element UI实现自定义的分页表格组件(自定义Vue组件)

    这篇文章,主要介绍Vue2 + Element UI实现自定义的分页表格组件(自定义Vue组件)。 目录 一、分页表格 1.1、运行效果 1.2、运行环境 1.3、案例代码

    2024年02月11日
    浏览(59)
  • 【vue2】中 谷歌 Chrome 实现自定义页眉页脚打印

    解决的最终方案如下图  需求:页眉页脚如下,设计图所示,使用浏览器Ctrl+P打印即可,大小B5试纸 说明:数据内容不确定分页的情况下,建议使用 方法二 相关属性参考地址:https://www.w3cplus.com/css/designing-for-print-with-css.html 方法一:绝对相对定位(将自定义的页眉页脚内容通

    2024年02月12日
    浏览(67)
  • Vue2之webpack篇(二)Loader

    目录 一、loader处理css 1、css文件的创建 2、安装css-loader  3、配置 4、打包  5、最终效果 二、loader处理图片 1、引入图片 2、安装file-loader 3、配置module 4、webpack打包  三、ES6转ES5 1、介绍 2、安装babel-loader 3、webpack.config.js配置 4、webpack打包 四、打包Vue 1、下载vue 2、引入、使用

    2024年02月09日
    浏览(31)
  • 《Webpack5 升级》- Vue2.x 组件库 Webpack3 升 5

    基于 Vue2.x 的项目和组件库开发于 2019 年 ,那时对 Webpack 版本没有概念,项目和组件库的版本混乱…有的使用 v3 ,有的使用 v4 … 对于现今 2023 年(或 2024 年) 的整个生态环境是不够用的,无法使用较新和更优秀的插件。所以升级 势在必行 ! 注意 本篇是 基于 Vue2.x 组件库

    2024年02月03日
    浏览(44)
  • 使用Vue3和Vite升级你的Vue2+Webpack项目

    🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页 ——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文并茂🦖生动形象🐅简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍专栏》 🐾 学会IDEA常用操作,工作效率翻倍~💐 🌊 《100天精通Golang(基础

    2024年02月09日
    浏览(68)
  • nginx vue2+webpack 和 vue3+vite 配置二级目录访问

    我们开发中会遇到这样的需求,让我们用服务器nginx部署一个用域名的二级目录来访问项目 https:xxx/二级目录/ 来放访问项目 目录 思路 1、nginx配置(vue2 和 vue3配置的nginx相同) 2、vue2+webpack的配置 (1)vue.config.js配置 (2)router配置 3、vue3+vite的配置 (1)vite.config.js配置 (

    2024年02月09日
    浏览(58)
  • Rspack 创建 vue2/3 项目接入 antdv(rspack.config.js 配置 less 主题)

    Rspack CLI 官方文档。 rspack.config.js 官方文档。 创建项目(文档中还提供了 Rspack 内置 monorepo 框架 Nx 的创建方式,根据需求进行选择) 创建好项目并运行,目前 Rspack 版本支持的工程模版: 默认创建的 vue 项目为 vue3 : 如果需要其他版本,或其他框架的基础工程,可到官方提

    2024年02月11日
    浏览(54)
  • vue2+webpack升级vue3+vite,在vue3组合式编程中使用vuex

    同学们可以私信我加入学习群! 我的项目是从vue2+webpack升级为vue3+vite,这种升级工作,其实最重要的不是如何快速准确地把原有vue2项目全部重构为vue3项目,因为这是不现实的。 升级工作一定是一个长久的持续过程,所以如何保证旧的vue2项目与新的vue3模块之间互相兼容,才

    2024年01月18日
    浏览(55)
  • 若依前端Vue3模板——自定义主题+炫彩主题

    实现结果 实现步骤 默认主题的设置 文件位置: src/settings.js 布局设置 图标文件 文件位置: src/assets/images/blue.svg 复制同级的 light.svg 修改名称即可,将两个颜色替换为:#409eff 布局组件 文件位置: src/layout/components/Settings/index.vue template模板中添加控件如下 新增一个主题风格选

    2024年02月14日
    浏览(51)
  • vue2+webpack升级vue3+vite,报错Cannot read properties of null (reading ‘isCE‘)

    同学们可以私信我加入学习群! 系列文章:vue2+webpack升级vue3+vite,修改插件兼容性bug 前面的文章主要是介绍,在升级初始阶段遇到的一些显而易见的兼容性问题和bug。随着项目迭代的不断深入,一些不容易暴露的问题也渐渐呈现。 本文主要记录一些开发重构过程中的bug vu

    2024年01月18日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包