react css 修改复写antd组件样式,而且不污染全局

13 篇文章 1 订阅

方法

比如说我想删掉antd Input.Search 的左边框
在这里插入图片描述

  1. 从页面上找到要修改的位置,页面上修改后确定是这个样式名
    在这里插入图片描述
  2. 利用:global

css中写法

:global(.ant-input-search-icon:before){
      border-left: initial;
}

scss或者less中写法 scss自带嵌套比较方便

     :global{
        .ant-input-search-icon:before{
          border-left: initial;
        }
      }

注意,全局都被修改了?

  • :在复写某一部分antd样式的时候,一定要在外面加个元素套一下,不然所有的这个同名的样式都会被改变
<div className={'wrapper'}> //一定要记得包一层避免全局的这个样式被修改,请使用普通的类声明方式
   <Search />
</div>

:global(.wrapper .ant-input-search-icon:before){
      border-left: initial;
}

  • 如果你使用css modules的话,包裹的时候请使用普通的方式声明类名,css modules的样式最后都会被加上唯一的哈希值来确保不会污染样式。所以css识别不到

错误的包裹

import styles from './styles.css'

<div className={styles.wrapper}>   //错误!!!!
   <Search/>
</div>

<div className={'wrapper'}> //正确!!!!
   <Search />
</div>

:global(.wrapper .ant-input-search-icon:before){
      border-left: initial;
}
  • 推荐使用scss或者less,自带的嵌套规则十分方便且不用担心css module带来的影响
<div className={styles.wrapper}>
   <Search/>
</div>

.wrapper{
	:global{
 	 	.ant-input-search-icon:before{
          	border-left: initial;
  	     }
   	}
}
  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值