1
1
---
2
- source-updated-at : 2025-05-19T22:31:51 .000Z
3
- translation-updated-at : 2025-05-19T23:06 :25.929Z
2
+ source-updated-at : 2025-05-25T15:16:02 .000Z
3
+ translation-updated-at : 2025-05-25T20:26 :25.233Z
4
4
title : 如何在应用中使用 CSS
5
5
nav_title : CSS
6
6
description : 了解在应用中添加 CSS 的不同方式,包括 CSS 模块 (CSS Modules)、全局 CSS (Global CSS)、Tailwind CSS 等。
7
7
related :
8
- title : 下一步
9
- description : 进一步了解在应用中使用 CSS 的其他方式 。
8
+ title : 后续步骤
9
+ description : 进一步了解在应用中使用 CSS 的其他替代方案 。
10
10
links :
11
11
- app/guides/tailwind-css
12
12
- app/guides/sass
@@ -24,13 +24,13 @@ Next.js 提供了多种在应用中使用 CSS 的方式,包括:
24
24
25
25
## CSS 模块 (CSS Modules)
26
26
27
- CSS 模块 ( CSS Modules) 通过生成唯一的类名来实现 CSS 的局部作用域。这允许你在不同文件中使用相同的类名而无需担心命名冲突 。
27
+ CSS 模块通过生成唯一的类名来实现 CSS 的局部作用域,这样您可以在不同文件中使用相同的类名而无需担心命名冲突 。
28
28
29
29
<AppOnly >
30
30
31
- 要开始使用 CSS 模块 (CSS Modules),创建一个扩展名为 ` .module.css ` 的文件 ,并将其导入到 ` app ` 目录下的任意组件中 :
31
+ 要开始使用 CSS 模块,请创建一个扩展名为 ` .module.css ` 的新文件 ,并将其导入到 ` app ` 目录中的任意组件 :
32
32
33
- ``` css filename="app/blog/styles .module.css"
33
+ ``` css filename="app/blog/blog .module.css"
34
34
.blog {
35
35
padding : 24px ;
36
36
}
@@ -56,7 +56,7 @@ export default function Layout() {
56
56
57
57
<PagesOnly >
58
58
59
- 要开始使用 CSS 模块 (CSS Modules),创建一个扩展名为 ` .module.css ` 的文件 ,并将其导入到 ` pages ` 目录下的任意组件中 :
59
+ 要开始使用 CSS 模块,请创建一个扩展名为 ` .module.css ` 的新文件 ,并将其导入到 ` pages ` 目录中的任意组件 :
60
60
61
61
``` css filename="/styles/blog.module.css"
62
62
.blog {
@@ -84,11 +84,11 @@ export default function Page() {
84
84
85
85
## 全局 CSS (Global CSS)
86
86
87
- 你可以使用全局 CSS (Global CSS) 在整个应用中应用样式 。
87
+ 您可以使用全局 CSS 来为整个应用应用样式 。
88
88
89
89
<AppOnly >
90
90
91
- 创建一个 ` app/global.css ` 文件,并在根布局中导入它,以将样式应用到应用中的 ** 每个路由** :
91
+ 创建一个 ` app/global.css ` 文件并将其导入根布局 (root layout),这样样式将应用到应用中的 ** 每个路由** :
92
92
93
93
``` css filename="app/global.css"
94
94
body {
99
99
```
100
100
101
101
``` tsx filename="app/layout.tsx" switcher
102
- // 这些样式会应用到应用中的每个路由
102
+ // 这些样式将应用到应用中的每个路由
103
103
import ' ./global.css'
104
104
105
105
export default function RootLayout({
@@ -116,7 +116,7 @@ export default function RootLayout({
116
116
```
117
117
118
118
``` jsx filename="app/layout.js" switcher
119
- // 这些样式会应用到应用中的每个路由
119
+ // 这些样式将应用到应用中的每个路由
120
120
import ' ./global.css'
121
121
122
122
export default function RootLayout ({ children }) {
@@ -128,13 +128,13 @@ export default function RootLayout({ children }) {
128
128
}
129
129
```
130
130
131
- > ** 须知:** 全局样式可以导入到 ` app ` 目录下的任何布局、页面或组件中 。但由于 Next.js 使用 React 内置的样式表支持来与 Suspense 集成,目前这不会在路由切换时移除样式表,可能导致冲突 。我们建议将全局样式用于** 真正** 全局的 CSS,而使用 [ CSS 模块 (CSS Modules)] ( #css-modules ) 来限定 CSS 作用域 。
131
+ > ** 须知:** 全局样式可以导入到 ` app ` 目录中的任何布局、页面或组件 。但由于 Next.js 使用 React 内置的样式表支持来与 Suspense 集成,目前在不同路由之间导航时不会移除样式表,这可能导致冲突 。我们建议将全局样式用于** 真正** 全局的 CSS,而对于局部作用域的 CSS 使用 [ CSS 模块 (CSS Modules)] ( #css-modules ) 。
132
132
133
133
</AppOnly >
134
134
135
135
<PagesOnly >
136
136
137
- 在 ` pages/_app.js ` 文件中导入样式表,以将样式应用到应用中的 ** 每个路由** :
137
+ 将样式表导入 ` pages/_app.js ` 文件,这样样式将应用到应用中的 ** 每个路由** :
138
138
139
139
``` tsx filename="pages/_app.js"
140
140
import ' @/styles/global.css'
@@ -144,11 +144,11 @@ export default function MyApp({ Component, pageProps }) {
144
144
}
145
145
```
146
146
147
- 由于样式表的全局性质,为避免冲突,你应该在 [ ` pages/_app.js ` ] ( /docs/pages/building-your-application/routing/custom-app ) 中导入它们。
147
+ 由于样式表的全局性质,为避免冲突,您应该在 [ ` pages/_app.js ` ] ( /docs/pages/building-your-application/routing/custom-app ) 中导入它们。
148
148
149
149
</PagesOnly >
150
150
151
- ## 外部样式表 (External stylesheets )
151
+ ## 外部样式表 (External Stylesheets )
152
152
153
153
<AppOnly >
154
154
@@ -188,13 +188,13 @@ export default function RootLayout({ children }) {
188
188
189
189
<PagesOnly >
190
190
191
- Next.js 允许你从 JavaScript 文件中导入 CSS 文件。这是因为 Next.js 扩展了 [ ` import ` ] ( https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/import ) 的概念,使其不仅限于 JavaScript。
191
+ Next.js 允许您从 JavaScript 文件导入 CSS 文件。这是可能的,因为 Next.js 扩展了 [ ` import ` ] ( https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/import ) 的概念,使其不仅限于 JavaScript。
192
192
193
193
### 从 ` node_modules ` 导入样式
194
194
195
195
自 Next.js ** 9.5.4** 起,允许从 ` node_modules ` 导入 CSS 文件到应用中的任何位置。
196
196
197
- 对于全局样式表,如 ` bootstrap ` 或 ` nprogress ` ,你应该在 ` pages/_app.js ` 中导入文件。例如:
197
+ 对于全局样式表,如 ` bootstrap ` 或 ` nprogress ` ,您应该在 ` pages/_app.js ` 中导入文件。例如:
198
198
199
199
``` jsx filename="pages/_app.js"
200
200
import ' bootstrap/dist/css/bootstrap.css'
@@ -204,7 +204,7 @@ export default function MyApp({ Component, pageProps }) {
204
204
}
205
205
```
206
206
207
- 对于第三方组件所需的 CSS,你可以在组件中导入 。例如:
207
+ 对于第三方组件所需的 CSS,您可以在组件中导入 。例如:
208
208
209
209
``` jsx filename="components/example-dialog.js"
210
210
import { useState } from ' react'
@@ -219,13 +219,13 @@ function ExampleDialog(props) {
219
219
220
220
return (
221
221
< div>
222
- < button onClick= {open}> Open Dialog < / button>
222
+ < button onClick= {open}> 打开对话框 < / button>
223
223
< Dialog isOpen= {showDialog} onDismiss= {close}>
224
224
< button className= " close-button" onClick= {close}>
225
- < VisuallyHidden> Close < / VisuallyHidden>
225
+ < VisuallyHidden> 关闭 < / VisuallyHidden>
226
226
< span aria- hidden> ×< / span>
227
227
< / button>
228
- < p> Hello there . I am a dialog < / p>
228
+ < p> 你好,我是一个对话框 < / p>
229
229
< / Dialog>
230
230
< / div>
231
231
)
@@ -236,7 +236,7 @@ function ExampleDialog(props) {
236
236
237
237
## 排序与合并 (Ordering and Merging)
238
238
239
- Next.js 在生产构建时会通过自动分块(合并)样式表来优化 CSS。** CSS 的顺序** 取决于** 你在代码中导入样式的顺序 ** 。
239
+ Next.js 在生产构建时会通过自动分块(合并)样式表来优化 CSS。** CSS 的顺序** 取决于** 您在代码中导入样式的顺序 ** 。
240
240
241
241
例如,` base-button.module.css ` 会排在 ` page.module.css ` 之前,因为 ` <BaseButton> ` 在 ` page.module.css ` 之前导入:
242
242
@@ -280,15 +280,15 @@ export function BaseButton() {
280
280
281
281
- 尽量将 CSS 导入限制在单个 JavaScript 或 TypeScript 入口文件中
282
282
- 在应用的根目录中导入全局样式和 Tailwind 样式表
283
- - 对于嵌套组件,使用 CSS 模块 (CSS Modules) 而非全局样式
284
- - 为 CSS 模块使用一致的命名约定,例如使用 ` <name>.module.css ` 而非 ` <name>.tsx `
283
+ - 对于嵌套组件,使用 CSS 模块而非全局样式
284
+ - 为 CSS 模块使用一致的命名约定。例如,使用 ` <name>.module.css ` 而非 ` <name>.tsx `
285
285
- 将共享样式提取到共享组件中以避免重复导入
286
286
- 关闭自动排序导入的 linter 或格式化工具,如 ESLint 的 [ ` sort-imports ` ] ( https://eslint.org/docs/latest/rules/sort-imports )
287
- - 你可以在 ` next.config.js ` 中使用 [ ` cssChunking ` ] ( /docs/app/api-reference/config/next-config-js/cssChunking ) 选项来控制 CSS 的分块方式
287
+ - 您可以在 ` next.config.js ` 中使用 [ ` cssChunking ` ] ( /docs/app/api-reference/config/next-config-js/cssChunking ) 选项来控制 CSS 的分块方式
288
288
289
289
## 开发与生产环境 (Development vs Production)
290
290
291
291
- 在开发环境 (` next dev ` ) 中,CSS 更新会通过 [ 快速刷新 (Fast Refresh)] ( /docs/architecture/fast-refresh ) 即时应用
292
292
- 在生产环境 (` next build ` ) 中,所有 CSS 文件会自动合并为** 多个经过压缩和代码拆分** 的 ` .css ` 文件,确保为路由加载最少数量的 CSS
293
- - 在生产环境中,即使禁用 JavaScript,CSS 仍会加载,但在开发环境中需要 JavaScript 以实现快速刷新 (Fast Refresh)
293
+ - 在生产环境中,即使禁用 JavaScript,CSS 仍会加载,但在开发环境中需要 JavaScript 来实现快速刷新
294
294
- CSS 顺序在开发环境中可能表现不同,请务必检查构建 (` next build ` ) 以验证最终的 CSS 顺序
0 commit comments