首页 > 其他分享 >Vue Ant Design Pro 中定制主题

Vue Ant Design Pro 中定制主题

时间:2023-05-18 21:01:48浏览次数:37  
标签:Vue const color Pro 主题 Ant vue colorWeak 定制

Vue Ant Design Pro 中定制主题

  • 需求
  • 定制主题
  • 去除“正在切换主题”过渡效果

 

需求

  • 项目要求使用草绿色的主题色
  • 并且去除如下的loading效果

    定制主题

    • 这里可以参照 Ant Design Pro of Vue 官方文档哦
    • 定制方式是使用 less 的 modifyVars 的方式进行覆盖变量
    • 官方文档已经给出了 webpack 、vue cli 2 以及 vue cli 3 三种不同场景下主题的定制方式。这里不再过多赘述
      • vue cli 3 下定制主题方式如下:
        • 项目根目录下修改文件 vue.config.js
        • module.exports = {css: {loaderOptions: {less: {lessOptions: {modifyVars: {'primary-color': '#1DA57A','link-color': '#1DA57A','border-radius-base': '2px',},javascriptEnabled: true,},},},},
          };

去除“正在切换主题”过渡效果

  • Ant Design Pro of Vue 中提供了一个可以在线切换主题和布局的设置抽屉,使用这个抽屉可以很方便的查看更换主题的效果,无需重启脚手架。
  • 真实项目中是需要去掉这个在线主题的定制抽屉的
  • 另一个问题是每次刷新页面是都会出现“正在切换主题”的全局提示
  • 如何去除“正在切换主题”的全局提示呢?
  • 方法很简单:
    • 首先我们需要按照上一节的方法定制好自己的主题哦,不然的话,去除全局提示后主题就还是 ant design 的默认主题哦
    • 上一步之后,就需要打开文件 src/layouts/BasicLayout.vue,大概在137~139行,可以看到这样一段代码:
      if (process.env.NODE_ENV !== 'production' || process.env.VUE_APP_PREVIEW === 'true') {updateTheme(this.settings.primaryColor)
      }
      
      • 注释或删除掉这段代码就可以啦
  • 我们来看看上节中 updateTheme 方法的源码
import client from 'webpack-theme-color-replacer/client'
import generate from '@ant-design/colors/lib/generate'
import { message } from 'ant-design-vue'export const themeColor = {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)},changeColor (newColor) {const options = {newColors: this.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 const updateTheme = newPrimaryColor => {const hideMessage = message.loading('正在切换主题', 0)themeColor.changeColor(newPrimaryColor).then(r => {hideMessage()})
}export const updateColorWeak = colorWeak => {// document.body.className = colorWeak ? 'colorWeak' : '';const app = document.body.querySelector('#app')colorWeak ? app.classList.add('colorWeak') : app.classList.remove('colorWeak')
}
  • 很明显,出现“正在切换主题”全局提示的罪魁祸首就是 updateTheme 方法里面的 hideMessage 方法
  • 其实之前想到的另一个方法就是直接使用 themeColor 的 changeColor 方法,而不是使用 updateTheme
  • 但不幸的是,这里虽然 export 了 themeColor,但 pro-layout 的 index.js 里面却没有 export 出去,所以项目中我们也就无从用起了 ε=(´ο`*)))唉
  •  

标签:Vue,const,color,Pro,主题,Ant,vue,colorWeak,定制
From: https://www.cnblogs.com/wangyb56/p/17413280.html

相关文章

  • 在Vue2项目中遇到的问题汇总
    1问题1:Proxyerror:Couldnotproxyrequest/studentsfromlocalhost:8080tohttp://localhost:5000/.SeehtProxyerror:Couldnotproxyrequest/studentsfromlocalhost:8080tohttp://localhost:5000/.Seeht终端报错:浏览器报错这个里面给的文件没有打开,打......
  • grafana+ prometheus+php 监控系统实践
    背景团队在开发流媒体服务,需要实现一个监控在线人数的功能,可以看到历史有多少人在线,当前有多少人在线的功能。如果用mysql等关系型数据库来实现,可以用事件记录日志,然后通过PHP加上一些绘图的插件来实现,但这种方式并不好,首先用关系型数据库随着时间累积,会存在数据量越来越大,导致查......
  • Grafana+prometheus+php 自动创建监控图
    背景在grafana+prometheus+php监控系统实践文章当中已经实现了我们的第一个监控图表,现在我们有了一个新需求,需要对多个节点实现不同的监控,以及一个汇总的监控;按照我们之前手动创建仪表盘的方法,每新增一个节点都需要手动去修改prometheus配置,并且需要去grafana系统当中创建一个仪......
  • HTML属性 分为两种Property 固有属性Attribute 自定义属性
    HTML属性 分为两种Property固有属性Attribute自定义属性。固有属性就是浏览器给默认给html标签绑定上的属性。 操作固有属性固有属性可以通过对象.属性名这样方式来设置和获取值。什么是自定义属性自定义属性就是用户自己定义,在固有属性列表中没有的属性。获取自定义......
  • Vue3迎来升级,全面助力企业数字化转型
    近年来,随着“互联网+”的推进与应用普及,数字化转型已经成为企业发展的必备选项。低代码开发平台的迅速普及和广泛应用,也为企业数字化的转型提供了支撑技术。JNPF快速开发平台深度集成java+.net 6 双技术引擎,具备易维护、便部署、高集成、高效率等多方面特性,面向企业项目提供开......
  • prometheus告警处理 altermanager
    prometheus告警处理altermanager一.告警简介1.工作流程prometheus收集监测的信息prometheus.yml文件中定义rules文件,rules里包含告警信息prometheus把告警信息push给altermanager,alertmanager里定义收件人和发件人altermanager发送文件到邮箱或微信2.告警生命......
  • VUE项目
    一、创建vue工程使用vue工程之前,确保已经安装了nodejs,在命令行中输入node-v可以看到node版本即可。nodejs官网下载地址http://nodejs.cn/download/current/安装vue#在cmd或pycharm的下方Terminal中执行命令npmconfigsetregistryhttps://registry.npm.taobao.org#......
  • Prometheus笔记-监控Nginx
    安装Nginx及stub_status模块参考历史文章:https://www.cnblogs.com/jruing/p/17391716.html安装Nginx-exporter#下载wgethttps://github.com/nginxinc/nginx-prometheus-exporter/releases/download/v0.11.0/nginx-prometheus-exporter_0.11.0_linux_amd64.tar.gz#解压......
  • “Present & Prospects (时局与前瞻) ”
    俗话说:“要富口袋先富脑袋,脑袋决定口袋”现实告诉我们,相比智商,人与人的差距很大一部分是由前瞻视野和思维因素拉开的。思维是无形的,却可以创造出有形的价值。“千金买居,万金买邻”,圈层之道,才是高端人居的终极要”。据斯坦福研究中心发表的一份调查报告指出:一个人赚的钱,12.5%来自......
  • vue中pdf预览,报错(Cannot read properties of undefined (reading ‘catch‘))解决
    1、在node_modules中找到vue-pdf,src下的pdfjsWrapper.jsif(pdfRender!==null){if(canceling)return;canceling=true;pdfRender.cancel().catch(function(err){emitEvent('error',err);});return;}修改为if(pdf......