logoAnt Design

⌘ K
  • 设计
  • 研发
  • 组件
  • 博客
  • 资源
  • 国内镜像
6.0.0-alpha.3
  • Ant Design of React
  • 更新日志
    v6.0.0-alpha.3
  • 如何使用
    • 快速上手
    • 在 Vite 中使用
    • 在 Next.js 中使用
      Updated
    • 在 Umi 中使用
    • 在 Rsbuild 中使用
    • 在 Farm 中使用
    • 使用 Refine
  • 进阶使用
    • 定制主题
    • 样式兼容
    • 服务端渲染
    • 使用 CSS 变量
      Updated
    • 使用自定义日期库
    • 国际化
    • 通用属性
  • 迁移
    • 从 v4 到 v5
    • 从 Less 变量到 Design Token
  • 其他
    • 社区精选组件
    • 贡献指南
    • FAQ
特性
注意
进阶使用
关闭 hash
开启 zeroRuntime 模式
修改主题
API

使用 CSS 变量

文档贡献者
服务端渲染使用自定义日期库

相关资源

Ant Design X
Ant Design Charts
Ant Design Pro
Pro Components
Ant Design Mobile
Ant Design Mini
Ant Design Web3
Ant Design Landing-首页模板集
Scaffolds-脚手架市场
Umi-React 应用开发框架
dumi-组件/文档研发工具
qiankun-微前端框架
Ant Motion-设计动效
国内镜像站点 🇨🇳

社区

Awesome Ant Design
Medium
X
yuque logoAnt Design 语雀专栏
Ant Design 知乎专栏
体验科技专栏
seeconf logoSEE Conf-蚂蚁体验科技大会
加入我们

帮助

GitHub
更新日志
常见问题
报告 Bug
议题
讨论区
StackOverflow
SegmentFault

Ant XTech logo更多产品

yuque logo语雀-构建你的数字花园
AntV logoAntV-数据可视化解决方案
Egg logoEgg-企业级 Node.js 框架
Kitchen logoKitchen-Sketch 工具集
Galacean logoGalacean-互动图形解决方案
WeaveFox logoWeaveFox-前端智能研发
xtech logo蚂蚁体验科技
主题编辑器
Made with ❤ by
蚂蚁集团和 Ant Design 开源社区
loading

自 5.12.0 起,Ant Design 5.x 重新支持了 CSS 变量。与 4.x 版本不同的是,这次我们融合了 CSS-in-JS 的能力,并且将所有 Design Token 纳入了 CSS 变量的管理范畴。

自 6.0.0 起,CSS 变量模式已经成为默认模式。

特性

CSS 变量模式为 Ant Design 的样式能力带来了两个重要的提升:

  1. 同一组件在不同主题下的样式可以共享,减少了样式体积
  2. 切换主题时不再需要重新序列化样式,提升了主题切换的性能

注意

WARNING

CSS 变量模式需要为每一个主题设置独特的 key 来保证样式隔离,在 React 18 中我们使用了 useId 来生成唯一的 key,所以在 React 18 中,你可以不用关心这个问题。但是在 React 17 或者 16 中,你需要手动为每一个主题设置一个唯一的 key,否则会导致主题混乱。

tsx
// React 17 or 16
<ConfigProvider theme={{ cssVar: { key: 'app' } }}>
<App />
</ConfigProvider>

审查元素,就可以看到 antd 组件样式中一些原本具体的数值被替换为了 CSS 变量:

image

进阶使用

关闭 hash

hash 是 Ant Design 5.0 以来的特性之一,其功能是为每一份主题计算一个独特的 hash 值,并将其用在组件的 class 上,用于隔离主题样式。

但是启用了 CSS 变量之后,相同 antd 版本下的组件样式将不会随着 token 变化而改变 —— 因为我们用 CSS 变量填充了样式中的动态部分。所以如果你的应用中只存在一个版本的 antd,你可以选择关闭 hash 来进一步减小样式体积:

tsx
<ConfigProvider theme={{ hashed: false }}>
<App />
</ConfigProvider>

开启 zeroRuntime 模式

自 6.0.0 起,我们提供了 zeroRuntime 模式来进一步提升应用性能。开启后,Ant Design 将不再在运行时生成组件样式,所以需要自行引入样式文件。

tsx
import 'antd/dist/antd.css';
export default () => (
<ConfigProvider theme={{ zeroRuntime: true }}>
<App />
</ConfigProvider>
);

antd/dist/antd.css 包含了所有 antd 组件的样式。如果你希望引入更少的样式,或者因为修改了 prefix 等配置无法使用默认的样式,推荐使用 @ant-design/static-style-extract 来生成静态样式。

tsx
import fs from 'fs';
import { extractStyle } from '@ant-design/static-style-extract';
const cssText = extractStyle({
includes: ['Button'], // 只包含 Button 组件的样式
});
fs.writeFileSync('/path/to/somewhere', cssText);

修改主题

在 CSS 变量模式下,修改主题的方法与之前无异,参考 定制主题。

API

cssVar 目前支持的参数:

属性说明类型默认值版本
prefixCSS 变量的前缀,默认与 ConfigProvider 上配置的 prefixCls 相同。stringant5.12.0
key当前主题的唯一识别 key. 在 React 18 中会默认用 useId 填充,小于 React 18 的版本需要手动填充。stringuseId in React 185.12.0