- A+
所属分类:教程文章

在Next.js中,你可以同时使用全局样式和CSS模块来构建灵活且可维护的样式系统。全局样式适用于通用类、重置样式或主题设置,而CSS模块则帮助你在组件层面实现样式隔离,避免命名冲突。
配置全局样式
Next.js要求将全局CSS样式导入到pages/_app.js(或app/layout.js,如果你使用App Router)中。
使用 Pages Router 时:
// pages/_app.js import '../styles/globals.css' <p>export default function App({ Component, pageProps }) { return <Component {...pageProps} /> }</p>
使用 App Router 时:
立即学习“前端免费学习笔记(深入)”;
// app/layout.js import './globals.css' <p>export default function RootLayout({ children }) { return ( <html lang="en"> <body>{children}</body> </html> ) }</p>
你可以在globals.css中定义通用样式,例如:
/* styles/globals.css */ @tailwind base; @tailwind components; @tailwind utilities; <p>body { margin: 0; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; }</p><p>h1, h2, h3 { color: #333; }</p>
使用CSS模块为组件添加私有样式
CSS模块通过自动局部作用域防止样式污染。文件名需以.module.css结尾。

GPTKit

108
一个AI文本生成检测工具

108
查看详情

例如,创建一个按钮组件:
/* components/Button.module.css */
.button {
background-color: #0070f3;
color: white;
padding: 10px 20px;
border: none;
border-radius: 5px;
cursor: pointer;
}
<p>.button:hover {
background-color: #0056b3;
}</p>
在组件中导入并使用:
// components/Button.js
import styles from './Button.module.css'
<p>export default function Button({ children }) {
return <button className={styles.button}>{children}</button>
}</p>
这样,styles.button会被编译成唯一类名,确保不会影响其他组件。
结合使用场景示例
假设你想在全局设置一个字体,但让按钮使用模块化样式:
- 在globals.css中定义
body { font-family: 'Inter', sans-serif; } - 在Button.module.css中只关注按钮自身的视觉表现
- 最终渲染时,全局字体生效,按钮样式独立无冲突
这种结构让你既能统一视觉基调,又能保证组件样式的封装性。
基本上就这些。全局样式管整体,模块样式管局部,两者互补,适合大多数项目需求。




