Ant Design StyleAnt Design Style
快速上手
最佳实践
API
更新日志
⌘ K

Table of Contents

基于 ConfigProvider 自定义
基本覆写
抬升权重覆写
多 classNames 场景覆写
相关讨论
最佳实践与案例集
样式书写
父子联动的样式书写
CSS Modules 全局样式覆写迁移
主题定制
扩展自定义 Token 类型定义
自定义 antd 组件样式
antd 静态方法的主题失效
主题切换
暗色模式下首屏会 “闪” 一下
组件库研发
🚧 基于 antd v5 二次封装组件库
样式案例
黏土风 UI
样式组件
自定义组件: MacOS 选择器
上一篇
扩展自定义 Token 类型定义
下一篇
antd 静态方法的主题失效

相关资源

Ant Design
Ant Design Pro
Ant Design Pro Components
Umi-React 应用开发框架
Dumi-组件/文档研发工具
qiankun-微前端框架

社区

Medium
Twitter
yuqueAnt Design 语雀专栏
Ant Design 知乎专栏
体验科技专栏
seeconfSEE Conf-SEE Conf-蚂蚁体验科技大会

帮助

GitHub
更新日志
讨论

more products更多产品

yuque语雀-知识创作与分享工具
AntVAntV-数据可视化解决方案
EggEgg-企业级 Node.js 框架
kitchenKitchen-Sketch 工具集
xtech蚂蚁体验科技
Copyright © 2022-2024
Made with ❤️ by 蚂蚁集团 - AFX & 数字科技
‌
‌
‌
‌

如何更加优雅地覆写 antd 组件样式?

基于 ConfigProvider 自定义

antd 在 V5 提供了全新的 theme 属性用于自定义,因此如果需要自定义组件样式,建议优先采用 CP 上的 theme 字段。

示例 demo 如下:

INFO

更多基于 ConfigProvider 的主题定制能力,详见 聊聊 Ant Design V5 的主题(上):CSSinJS 动态主题的花活。

antd-style 的 ThemeProvider 是基于 ConfigProvider 的业务层封装,提供业务友好的定制能力,查看:自定义主题

基本覆写

createStyles 方法存在一个 prefixCls 参数,使用该参数可以传入组件的前缀,这样一来,任何的样式覆写都可以随着 prefixCls 的变化而自动变化。

index.tsx
tsx

抬升权重覆写

在某些组件中,直接添加类名可能因为权重不够高,导致无法覆盖样式,此时可以通过 & 符号来抬升相应的权重。

无法覆盖
可正常覆盖
index.tsx
tsx

多 classNames 场景覆写

classNames 是 antd V5 的一个重头戏: [RFC] Semantic DOM Structure for all Components。 在过去,我们要做样式定义,需要找很多 dom 节点进行大量的样式覆写,而 antd 版本升级的过程中,有时候会对 dom 结构进行调整。这样一来,我们覆写的样式就会出现问题。

而 classNames 将为我们提供一个稳定的 dom 结构 API ,我们可以通过 classNames 传入的类名,将会文档指向对应的 dom 节点,进而大大降低 DOM 变化带来的 Breaking Change 风险,同时也让我们不必再 hack 式地找样式类名。

$
index.tsx
tsx

相关讨论

  • 样式权重问题