通过ConfigProvider
全局化配置prefixCls
的方式来修改ant design样式的prefix
,即默认主题通过类名前缀custom-default
来控制样式,而暗色主题通过类名前缀custom-dark
来控制样式
1. 编译默认主题css文件
# 指定prefix为custom-default
# 源文件为antd.less$ lessc --js --modify-var="ant-prefix=custom-default" node_modules/antd/dist/antd.less custom-default.css
按照上述步骤的命令会生成一个custom-default.css的文件,该文件为默认主题的样式文件,在该文件内容中有一段如下样式:
body {
margin: 0;
color: rgba(0, 0, 0, 0.85);
font-size: 14px;
...
}
这段内容主要是控制body区块的样式,我们将这段样式做如下修改
body .custom-default { /*添加.custom-default子样式*/
margin: 0;
color: rgba(0, 0, 0, 0.85);
font-size: 14px;
...
2. 同上述步骤1的处理,编译暗黑色主题css文件
# 指定prefix为custom-dark
# 源文件为antd.dark.less$ lessc --js --modify-var="ant-prefix=custom-dark" node_modules/antd/dist/antd.dark.less custom-dark.css
同样的,生成的暗黑色样式文件custom-dark.css中有这么一段:
body {
margin: 0;
color: rgba(255, 255, 255, 0.85);
font-size: 14px;
...
}
我们也做类似的修改:
body .custom-dark { /*添加.custom-dark 子样式*/
margin: 0;
color: rgba(255, 255, 255, 0.85);
font-size: 14px;
}
3.App.tsx中引入上述两个步骤生成的css文件import "./custom-default.css"; // 引入custom-default.css 以及 custom-dark.css
import "./custom-dark.css";
4.在总组件上进行ConfigProvider包裹(作用:动态改变类名)
language-tsx
React + Antd实现动态切换主题功能_草率小猿的博客-CSDN博客
https://blog.csdn.net/m0_58016522/article/details/122067153