Antd Select 选择器组件设置 focus 样式

众所周知,Select 组件的基本色调是 #4096ff 与 #1677ff 天蓝色。根据项目需求,我需要把 Select 组件的 hover 与 focus 的颜色都改成主色调红色。于是我开始了自己漫长的尝试。

尝试一:在 Select 组件外包裹一个类,在该类下面写 :global 下的 .ant-select-selector:hover 与 focus 的样式。

代码如下:

<div className={styles.selectBoxWrapper}>
    <Select
      className={styles.selectBox}
      placeholder="beverage"
    />
</div>
.selectBoxWrapper {
	:global {
        .ant-select-selector:hover {
            border: 1px solid red !important;
        }
        .ant-select-selector:focus {
            border: 1px solid red !important;
            box-shadow: 0 0 0 2px #77141f19 !important;
        }
    }
}

但是效果不佳,在 hover 时确实有变红色效果,但是在 focus 时就还是原来的效果。但是在 f12 开发者工具中点击显示 :focus 启动样式,又能显示样式,让我感到很蒙。
hover时红色:
hover时红色
focus 时但是鼠标移开了,变回原来的颜色 #1677ff
focus但是移开了
focus的同时点启用 f12 开发者页面的 :focus 功能,又有效果了:
在这里插入图片描述
我一直感到很怪,因为修改 Input,Button 这类组件的时候都没有遇到问题。直到认识到 antd 5 有一个 Design Token,里面的 Global Token 里面可以修改基本样式。因此我在搜寻了数十次以后,决定使用这种方法来定义 Select 的样式。

尝试二:使用 Design Token 修改 Primary color

可以看到在 Global Token 下有一个 colorPrimary 键,它的值对应的就是组件的主色调。现在的主色调是 #1677ff,我们将其改成我们项目的主色调就行。

在这里插入图片描述
代码如下:

<ConfigProvider
        theme={{
          token: {
            colorPrimary: "red",
          }
        }}
      >
	<div className={styles.selectBoxWrapper}>
	    <Select
	      className={styles.selectBox}
	      placeholder="beverage"
	    />
	</div>
</ConfigProvider>

可以发现效果都是我们想要的效果。
在这里插入图片描述
OK,终于,本线程结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值