据官方docs:
由于其副作用和排序问题,全局 CSS 不能用于您的自定义 <App> 以外的文件中。
可能的修复方法
将所有全局 CSS 导入重新定位到您的 pages/_app.js 文件。
在你的情况下如何做到这一点?
嗯,最好的方法是使用 CSS 基础,我们以 normalize.css 为例。
-
运行 yarn add normalize.css 或 npm i normalize.css,具体取决于您使用的是哪个。
-
在您要使用基础的每个页面中添加import 'normalize.css';。 Official Docs.
如果您想在所有页面中使用基础,这似乎是多余的。如果是这样,您也可以创建一个文件page/_app.tsx(任何扩展名.js、.jsx、.ts、.tsx 都可以)并将其放入其中:
import 'normalize.css';
export { default } from 'next/app';
Note :如果您的应用正在运行并且您刚刚添加了自定义App,则需要重新启动开发服务器。仅当 pages/_app.tsx 之前不存在时才需要。
无需担心文档中提到的其他警告,因为我们只是重新导出 App 而无需任何修改。
有许多可用的 CSS 基础,选择最适合您的。
如果要添加自定义全局样式,请按照以下步骤操作:
-
创建一个文件styles/globals.css(.scss、.sass 等如果您有configured Next.js properly 也可以使用)并将您的样式放入该文件中。
-
现在在pages/_app.tsx 中添加一个导入。
import '../styles/globals.css'; // change extension from `.css` to
// whatever you created above
export { default } from 'next/app';
如果您已经为../styles 创建了module path alias,那么您可能想要更改样式导入语句(可能更改为import '@styles/globals.css' 之类的内容)。
另外,如果你正在使用 less/sass/scss 并且想同时使用 base 和自定义全局样式,你只需要在样式表中使用 import 语句(不需要在 @ 中导入 base 987654349@ 如果在全局样式表中导入)。一个例子:
// file: styles/globals.scss
@import '../node_modules/normalize.css/normalize.css';
// your styles...
body {
color: red;
}
// file: pages/_app.tsx
import '@styles/globals.scss';
export { default } from 'next/app';
此外,在您的情况下,它很可能没有工作,因为您使用的是.body 而不是body。 body 中可能存在边距,而不是您的 div.body。