位置: IT常识 - 正文

使用vue-antd动态切换主题(vue 动态tab)

编辑:rootadmin
这篇文章主要介绍了使用vue-antd动态切换主题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教 目录

推荐整理分享使用vue-antd动态切换主题(vue 动态tab),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:ant design vue 动态菜单,antd-vue-pro,vue中如何实现动态组件,ant design vue 动态菜单,antd vue pro 动态路由,antd vue pro 动态路由,antd vue pro 动态路由,antd vue pro 动态路由,内容如对您有帮助,希望把文章链接给更多的朋友!

vue-antd动态切换主题安装依赖Vue3.0 + Antd,修改antd主题色,配置全局cssvue-antd动态切换主题安装依赖1 webpack-theme-color-replacer: yarn add webpack-theme-color-replacer@1.3.222 less: yarn add less@2.7.23 less-loader: yarn add less-loader@7.0.2

在vue.config.js中加入配置

const createThemeColorReplacerPlugin = require("./plugin.config");const vueConfig = {  css: {    loaderOptions: {      less: {        lessOptions: {          modifyVars: {             //注意:此处不能给默认值,否则会导致主题色动态配置失败            // less vars,customize ant design theme            //'primary-color': '#2f54eb',            //'link-color': '#2f54eb',            //'border-radius-base': '4px'          },          // DO NOT REMOVE THIS LINE          javascriptEnabled: true,        },      },    },  },  configureWebpack: {    plugins: [createThemeColorReplacerPlugin()],  },  assetsDir: "static",};module.exports = vueConfig;

添加主题色更改方法,新建util文件夹创建plugin.config.js

const ThemeColorReplacer = require('webpack-theme-color-replacer')const generate = require('@ant-design/colors/lib/generate').defaultconst getAntdSerials = (color) => {  // 淡化(即less的tint)  const lightens = new Array(9).fill().map((t, i) => {    return ThemeColorReplacer.varyColor.lighten(color, i / 10)  })  const colorPalettes = generate(color)  const rgb = ThemeColorReplacer.varyColor.toNum3(color.replace('#', '')).join(',')  return lightens.concat(colorPalettes).concat(rgb)}const themePluginOption = {  fileName: 'css/theme-colors-[contenthash:8].css',  matchColors: getAntdSerials('#1890ff'), // 主色系列  // 改变样式选择器,解决样式覆盖问题  changeSelector (selector) {    switch (selector) {      case '.ant-calendar-today .ant-calendar-date':        return ':not(.ant-calendar-selected-date):not(.ant-calendar-selected-day)' + selector      case '.ant-btn:focus,.ant-btn:hover':        return '.ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger),.ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger)'      case '.ant-btn.active,.ant-btn:active':        return '.ant-btn.active:not(.ant-btn-primary):not(.ant-btn-danger),.ant-btn:active:not(.ant-btn-primary):not(.ant-btn-danger)'      case '.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon':      case '.ant-steps-item-process .ant-steps-item-icon>.ant-steps-icon':        return ':not(.ant-steps-item-process)' + selector      case '.ant-menu-horizontal>.ant-menu-item-active,.ant-menu-horizontal>.ant-menu-item-open,.ant-menu-horizontal>.ant-menu-item-selected,.ant-menu-horizontal>.ant-menu-item:hover,.ant-menu-horizontal>.ant-menu-submenu-active,.ant-menu-horizontal>.ant-menu-submenu-open,.ant-menu-horizontal>.ant-menu-submenu-selected,.ant-menu-horizontal>.ant-menu-submenu:hover':      case '.ant-menu-horizontal > .ant-menu-item-active,.ant-menu-horizontal > .ant-menu-item-open,.ant-menu-horizontal > .ant-menu-item-selected,.ant-menu-horizontal > .ant-menu-item:hover,.ant-menu-horizontal > .ant-menu-submenu-active,.ant-menu-horizontal > .ant-menu-submenu-open,.ant-menu-horizontal > .ant-menu-submenu-selected,.ant-menu-horizontal > .ant-menu-submenu:hover':        return '.ant-menu-horizontal > .ant-menu-item-active,.ant-menu-horizontal > .ant-menu-item-open,.ant-menu-horizontal > .ant-menu-item-selected,.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-item:hover,.ant-menu-horizontal > .ant-menu-submenu-active,.ant-menu-horizontal > .ant-menu-submenu-open,.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu-selected,.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu:hover'      case '.ant-menu-horizontal > .ant-menu-item-selected > a':      case '.ant-menu-horizontal>.ant-menu-item-selected>a':        return '.ant-menu-horizontal:not(ant-menu-light):not(.ant-menu-dark) > .ant-menu-item-selected > a'      case '.ant-menu-horizontal > .ant-menu-item > a:hover':      case '.ant-menu-horizontal>.ant-menu-item>a:hover':        return '.ant-menu-horizontal:not(ant-menu-light):not(.ant-menu-dark) > .ant-menu-item > a:hover'      default :        return selector    }  }}const createThemeColorReplacerPlugin = () => new ThemeColorReplacer(themePluginOption)module.exports = createThemeColorReplacerPlugin

添加util.js文件

import client from "webpack-theme-color-replacer/client";import generate from "@ant-design/colors/lib/generate";function getAntdSerials(color) {  // 淡化(即less的tint)  const lightens = new Array(9).fill().map((t, i) => {    return client.varyColor.lighten(color, i / 10);  });  // colorPalette变换得到颜色值  const colorPalettes = generate(color);  const rgb = client.varyColor.toNum3(color.replace("#", "")).join(",");  return lightens.concat(colorPalettes).concat(rgb);}function changeColor(newColor) {  var options = {    newColors: getAntdSerials(newColor), // new colors array, one-to-one corresponde with `matchColors`    changeUrl(cssUrl) {      return `/${cssUrl}`; // while router is not `hash` mode, it needs absolute path    },  };  return client.changer.changeColor(options, Promise);}export default {  updateTheme(newPrimaryColor) {    const hideMessage = () => console.log("正在切换主题!", 0);    changeColor(newPrimaryColor).finally((t) => {      setTimeout(() => {        hideMessage();      });    });  },};

然后在main.js中引入为Vue原型prototype中的方法

import utils from "./utils"Vue.prototype.$u = utils//注意antd样式的引入必须由css改为less引入- import 'ant-design-vue/dist/antd.css';+ import 'ant-design-vue/dist/antd.less';

然后项目启动起来后调用Vm.$u.updateTheme方法即可动态改变主题色。

注意该方法传值必须传十六进制的颜色,如果传颜色对应的英文字符可能会出错.

使用vue-antd动态切换主题(vue 动态tab)

如果自定义组件或者元素也需要统一管理主题色,则在assets目录新建main.less

@import "~ant-design-vue/dist/antd.less";#home {  color: @primary-color;}

在main.less中引入antd的样式,然后antd的主题色是@primary-color, 直接使用即可

然后在main.js中直接引入main.less

- import 'ant-design-vue/dist/antd.less';+ import "./assets/css/main.less"Vue3.0 + Antd,修改antd主题色,配置全局css

1.在vue.config.js里修改配置

module.exports = {  css: {    loaderOptions: {      less: {        lessOptions: {          modifyVars: {            'primary-color': '#3d62ff',// 修改全局主题色          },          javascriptEnabled: true,        },      },    },    extract: true, // 解决开发模式,打包时未提取CSS的问题  }}

2.把main.ts中的import ‘ant-design-vue/dist/antd.css’;

修改为 import ‘ant-design-vue/dist/antd.less’;

修改css为less的时候,会报错 .bezierEasingMixin()

解决方法是:先卸载less-loader

npm uninstall -D less-loader

再安装less-loader@6.0.0

npm install -D less-loader@6.0.0

然后重新运行项目即可

以上为个人经验,希望能给大家一个参考,也希望大家多多支持本站。

本文链接地址:https://www.jiuchutong.com/zhishi/304790.html 转载请保留说明!

上一篇:phpcms上传不了图片怎么办(php实现上传图片功能)

下一篇:一起爬山吗?《隐秘的角落》为什么译成Cat's Cradle?(你要和我一起爬山吗)

  • 华为平板丢了怎么定位找回(华为平板丢了怎么用手机定位找回)

    华为平板丢了怎么定位找回(华为平板丢了怎么用手机定位找回)

  • 爱普生l3158打印机怎么连接wifi(爱普生l3158打印机使用教程)

    爱普生l3158打印机怎么连接wifi(爱普生l3158打印机使用教程)

  • vivo手机抖音权限怎么设置(vivo手机抖音怎么设置私密)

    vivo手机抖音权限怎么设置(vivo手机抖音怎么设置私密)

  • 苹果微信限额设置方法(苹果微信限额怎么设置)

    苹果微信限额设置方法(苹果微信限额怎么设置)

  • oz9976agn如何去保护(oz9926agn如何去保护)

    oz9976agn如何去保护(oz9926agn如何去保护)

  • 浏览器为什么不能打开网页(浏览器为什么不能扫一扫)

    浏览器为什么不能打开网页(浏览器为什么不能扫一扫)

  • 谷歌play点登录没反应(谷歌play登录不了)

    谷歌play点登录没反应(谷歌play登录不了)

  • 拼多多砍价的加速礼包是什么意思(拼多多砍价加微信)

    拼多多砍价的加速礼包是什么意思(拼多多砍价加微信)

  • 为什么有的网页wifi打不开,4g网可以打开(为什么有的网页用wifi能打开用流量打不开)

    为什么有的网页wifi打不开,4g网可以打开(为什么有的网页用wifi能打开用流量打不开)

  • 能打电话的平板(能打电话的平板有哪些)

    能打电话的平板(能打电话的平板有哪些)

  • 苹果探探闪退怎么回事(探探闪退怎么回事)

    苹果探探闪退怎么回事(探探闪退怎么回事)

  • web的主要功能(web具有哪些特点?)

    web的主要功能(web具有哪些特点?)

  • 为什么微信通讯录里找不到联系人(为什么微信通讯录打不开)

    为什么微信通讯录里找不到联系人(为什么微信通讯录打不开)

  • 微信支付没有声音提醒(微信支付没有声音提示音)

    微信支付没有声音提醒(微信支付没有声音提示音)

  • 如何关闭智慧语音(如何关闭智慧语音通知)

    如何关闭智慧语音(如何关闭智慧语音通知)

  • 微信传送视频大小限制(微信传送视频过大怎么办)

    微信传送视频大小限制(微信传送视频过大怎么办)

  • 手机一冷就闪屏怎么办(手机天一冷就闪屏)

    手机一冷就闪屏怎么办(手机天一冷就闪屏)

  • 微信绑定了别人的手机号怎么解冻(微信绑定了别人的银行卡怎么办)

    微信绑定了别人的手机号怎么解冻(微信绑定了别人的银行卡怎么办)

  • 手机如何邀请好友加入qq群(手机如何邀请朋友进群)

    手机如何邀请好友加入qq群(手机如何邀请朋友进群)

  • 趣键盘图片怎么直接发(键盘有图片怎么设置)

    趣键盘图片怎么直接发(键盘有图片怎么设置)

  • 拼多多免拼成功啥意思(拼多多免拼成功后怎么取消订单)

    拼多多免拼成功啥意思(拼多多免拼成功后怎么取消订单)

  • 戴尔电脑做系统按f几(戴尔电脑做系统找不到硬盘)

    戴尔电脑做系统按f几(戴尔电脑做系统找不到硬盘)

  • gskill是什么内存条(内存g是什么意思)

    gskill是什么内存条(内存g是什么意思)

  • 自查补缴增值税的会计处理
  • 综合收入扣税
  • 劳务报酬和工资薪金哪个税率高
  • 利息费用如何在记账软件输入
  • 个税和社保基数不一致会影响上海落户吗
  • 手撕票几个点
  • 过路费是来回收费还是单向
  • 桐木板芯销售
  • 资产负债表不平的原因有哪些
  • 行政事业单位收据样本
  • 资产报废账务处理资产处置损益
  • 政府转账捐赠怎么做分录
  • 民事诉讼的适用范围和基本制度
  • 住房补贴是现金还是转账
  • 出口退税代理费用大概多少
  • 分期收款发出商品属于什么科目
  • 查账征收改为核定征收需要什么资料
  • 企业债券和公司债券
  • 应收账款与主营业务收入的比率
  • mcdlc.exe - mcdlc是什么进程文件 有何作用
  • 不动产经营租赁范围
  • 物业管理费发票图片
  • 公网访问内网主机
  • php是基于
  • 股权换股权会计分录
  • 德比郡在哪
  • 机动车发票金额含税吗
  • python网络爬虫技术
  • php pdo类
  • 债务重组收入要交税吗
  • php验证身份证号
  • php实现验证码
  • 前端get请求传数组
  • 入侵防御部署方式
  • nvm for windows
  • bind函数错误
  • 进出口总额用什么字母表示
  • mysql有几种
  • python 操作数据库
  • 经营成本包括五项内容
  • 转租行为的税务处理方法
  • 公司为职工承担社保费用
  • 个税汇算清缴时劳务报酬怎么计税
  • 退货的增值税专用发票怎么开
  • 税务局退回来的附加税金怎么做账
  • 购房契税如何入账
  • 企业跨年度的收入退回应该如何进行会计处理?
  • 什么叫应纳税额六年级下册
  • 企业变卖汽车收入要交增值税吗
  • 费用科目可以在借方吗
  • 当月财务费用怎么算
  • 银行存款利息的结算方式
  • 虚拟模块
  • 会计凭证移交凭证需要哪些程序
  • 贴现办理流程
  • sqlserver锁机制
  • mysql 启动报错
  • mentohust配置
  • linux chmod命令用法
  • win8.1 build9600
  • xbox无法连接无线网络
  • win8系统中向日葵软件造成的屏幕亮度无法调节怎么办?
  • win10系统wifi信号断断续续
  • 惠普笔记本的BIOS键
  • 电脑系统win8怎么样
  • el-select tree
  • perl 教程
  • js中的三种弹出式消息提醒的命令是什么
  • Http TCP 协议
  • three.js入门教程(合集)
  • angular.js
  • javascript教程
  • 使用jquery的步骤
  • javascript函数的定义
  • 国家税务总局广东省税务局待遇
  • 南京退林还耕
  • 车辆购置税怎么买
  • 湖南电子税务申报
  • 重庆国家税务局官方网站
  • 建筑工程招标代理服务费
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设