ant-design / ant-design-pro

👨🏻‍💻👩🏻‍💻 Use Ant Design like a Pro!
https://pro.ant.design
MIT License
36.35k stars 8.14k forks source link

🧐[问题 | question] antd4 如何实现动态主题切换(夜间/白天模式)defaultSettings.ts文件中的navTheme值,不管设置成 light 还是dark, 只有侧边栏主题色会变化,右侧header 和 内容区域 主题色一直是浅色 #11107

Closed chenduxiuhaha closed 8 months ago

chenduxiuhaha commented 8 months ago

🧐 问题描述 | Problem description

在umi/max + antd@4 项目中,通过修改config/defaultSettings.ts文件中的navTheme值,不管设置成 light 还是dark, 只有侧边栏主题色会变化,右侧header 和 内容区域 主题色一直是浅色。请问怎么解决

chenshuai2144 commented 8 months ago

要实现 antd4 的动态主题切换(夜间/白天模式),可以通过修改 defaultSettings.ts 文件中的 navTheme 值来实现。但目前你遇到的问题是,无论将 navTheme 设置成 light 还是 dark,只有侧边栏的主题色会变化,而右侧的 header 和内容区域的主题色始终是浅色。

这个问题的解决方案涉及到修改主题颜色的方式。antd4 提供了两种方式来修改主题颜色:

  1. 使用 CSS 变量:antd4 内部是使用了 CSS 变量来实现主题切换,你可以使用 CSS 变量来修改其他组件的主题色。具体的步骤如下:

    • defaultSettings.ts 文件中,将 navTheme 的值设置为 lightdark
    • 在全局样式文件中,使用 CSS 变量来定义需要修改的组件的主题颜色。例如,你可以定义一个 @color-primary 的 CSS 变量,并将其设置为你想要的主题色。
    • 在需要修改主题颜色的组件中,使用该 CSS 变量来定义颜色属性。
  2. 使用 antd 提供的 modifyVars 方法:如果你不想使用 CSS 变量的方式,antd4 还提供了一个 modifyVars 方法,可以用来全局修改 antd 组件的样式。具体的步骤如下:

    • defaultSettings.ts 文件中,将 navTheme 的值设置为 lightdark
    • config-overrides.js 文件中,使用 modifyVars 方法来全局修改 antd 组件的样式。例如,你可以通过 modifyVars 方法来修改按钮组件的主题色。

希望以上解决方案可以帮助你解决问题。如果还有任何疑问,请随时提问。