PAYATHON 2026

如何在 shadcn/ui Next.js 应用中默认启用深色模式?

数据阿明

结论

可以不使用 ThemeProvider。如果应用一直使用深色模式,可以在 Next.js 根布局的 <html> 元素上添加 dark 类。项目需要预先配置深色主题规则和对应的 CSS 变量。

设置方法

在 App Router 项目的 app/layout.tsx 中设置根元素:

export default function RootLayout({
  children,
}: Readonly<{
  children: React.ReactNode
}>) {
  return (
    <html lang="zh-CN" className="dark">
      <body>{children}</body>
    </html>
  )
}

如果 <html> 上已有其他类名,例如字体类,请保留,并把 dark 加进去。

shadcn/ui 组件的深色外观通常依赖项目中的深色样式定义。使用 CSS 变量时,应在 .dark 选择器下定义深色变量;使用 Tailwind 的 dark: 变体时,也要确认深色模式采用基于类名的配置。添加 dark 类后,项目仍需定义相应的深色颜色和样式。

注意事项

这样设置后,应用会始终以深色主题渲染。如果之后要根据系统偏好或用户选择切换主题,可以再引入 ThemeProvider 或相应的主题管理逻辑。Tailwind 和 CSS 的配置因项目而异,请根据当前使用的版本检查深色模式规则。

备注:内容仅供参考。