公司日常业务开发中,我是如何基于antd定制属于自己的主题

本文介绍了在日常业务开发中基于Ant Design自定义主题的方法。首先阐述了自定义主题的需求,然后详细说明了如何通过webpack和craco配置进行主题定制,包括样式文件后缀替换、入口文件引用样式替换以及配置less变量文件。此外,文章还探讨了如何更好地定制主题,强调沟通、封装和宣讲的重要性,以实现符合公司UI规范的高效开发流程。
摘要由CSDN通过智能技术生成

1.为什么要自定义antd

虽然日常业务开发、我们大都使用Antd进行业务开发,使用Antd原因,因为组件丰富,能够基本满足我们日常的业务开发场景,且生态良好,有大厂背书。

但尽管如此,再好看的ui,也是人家阿里的标准,每个公司总会有自己的ui,总会有自己的一套ui标准,为此,我们希望能够定制antd,甚至依托于antd进行二次创作,也就是样式复写。

但是复写样式会造成很多问题,好在,antd官网提供了一套解决方案供我们实现,来定制属于自己公司的antd

2. 如何自定义antd主题

根据antd官方介绍以及源码查阅,我们可以得知,antd使用less,并且其定义了一系列全局/组件的样式变量(实操后虽然有些不全),但已经把常用的变量已经暴露出来供我们修改,如果缺少你想要定制的变量名,antd也提出可以提issue。 具体暴露了哪些变量,我们可以点击antd主题变量查阅。

我们根据官网查阅得知:定制方式原理上是使用 less 提供的 modifyVars 的方式进行覆盖变量。

光说不练假把式,下面我们来看下具体如

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个基于 Antd Design Vue UI 库的 Modal 组件的可拖拽方法: ```html <template> <a-modal :style="{ top: top + 'px', left: left + 'px' }" :visible="visible" :title="title" :on-cancel="onCancel" :mask-closable="false" :width="width" @mousedown="handleMousedown" @mousemove="handleMousemove" @mouseup="handleMouseup"> <slot></slot> </a-modal> </template> <script> export default { props: { title: String, visible: Boolean, width: [String, Number], onCancel: Function }, data() { return { dragging: false, top: 0, left: 0, startX: 0, startY: 0 }; }, methods: { handleMousedown(e) { if (e.button === 0) { this.dragging = true; this.startX = e.pageX - this.left; this.startY = e.pageY - this.top; } }, handleMousemove(e) { if (this.dragging) { this.left = e.pageX - this.startX; this.top = e.pageY - this.startY; } }, handleMouseup(e) { this.dragging = false; } } }; </script> ``` 在这个组件,我们使用了 Antd Design Vue UI 库的 Modal 组件,并在其基础上添加了三个事件监听器:mousedown、mousemove 和 mouseup。当用户按下鼠标左键时,我们将 dragging 状态设置为 true,并记录下鼠标相对于 Modal 左上角的偏移量;当用户移动鼠标时,我们根据当前鼠标的位置和之前记录的偏移量计算出 Modal 的新位置,并实时更新 top 和 left 的值;当用户松开鼠标时,我们将 dragging 状态设置为 false,停止拖拽。 最后,在 Modal 组件的 style ,我们使用了计算属性将 top 和 left 的值应用到样式,从而实现了可拖拽的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值