如何优雅地彻底解决 antd 全局样式问题

文章讲述了在进行组件二次开发时遇到antd全局样式与父组件样式冲突的问题,提出了通过增加特定className实现样式隔离的方法,包括提高子组件权重、使用模块化样式,并强调了避免全局样式污染的重要性。
摘要由CSDN通过智能技术生成

背景
由于某些原因,我们团队负责在组件 上做二次开发,简单理解就是封装组件,组件库选择了 antd,尴尬的是引入之后发现,父组件 自身是带一套全局样式的,而 子组件antd 又带了一套全局样式,导致 子组件 的部分样式被覆盖,如图:

在这里插入图片描述
首先 明确完冲突后解决方案有两个
1.提高子组件的样式权重 或者降低父组件的样式权重
2.增加特定的classname名字 增加样式隔离

首先可以给自己组建的的body添加一层classname名字

    document.getElementsByTagName("body")[0].className="dark-body-class";

全面提高子文文件 ant- 的优先级 感兴趣可以看掘金文章 https://juejin.cn/post/6844904116288749581

增加特定的classname重新覆盖回去

.dark-theme .dp-component-dark-date.ant-calendar-time-picker-select-option-selected:hover {
    background: rgba(255, 255, 255, 0.08) !important;
    color: rgba(255, 255, 255, 0.68) !important;
  }

module里边增加特定的classname重新覆盖回去 ,这边推荐使用module样式编写代码,因为外边会增加一层隔离classname哈希值,不容易被覆盖和影响

className={`test-blue ${styles['operation-span']}`}

总结:更改antd全局的样式,一定一定要加classname做一个隔离,不然会出现不可思议的样式问题,覆盖来覆盖去,全局样式会被污染,切记切记!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值