./app/fonts.ts
import { Montserrat, Open_Sans } from 'next/font/google'
export const montserrat = Montserrat({
subsets: ['latin'],
variable: '--font-montserrat',
display: 'swap',
});
export const open_sans = Open_Sans({
subsets: ['latin'],
variable: '--font-open-sans',
display: 'swap',
});
当将字体应用于元素时,一切正常:
.app/page.tsx
import {montserrat} from "./fonts";
export default function Home() {
return (
<>
<h1 className={`${montserrat.className}`}>Hello World</h1>
</>
);
}
但是,由于我的应用程序变得非常大,我想应用全局样式。我怎样才能做这样的事情:
.app/globals.css
h1 {
font-family: "open-sans";
}
h6 {
font-family: "montserrat";
}
并将我使用 Next.js 导入的字体分别全局应用于所有 h1 和 h6 元素?
app/layout.ts
:
// add this to <body>:
<body className={`${montserrat.variable} ${open_sans.variable}`}>
...
</body>
然后在 CSS 文件中使用该变量:
h1 {
font-family: var(--font-open-sans);
}
h6 {
font-family: var(--font-montserrat);
}
文档:https://nextjs.org/docs/app/api-reference/components/font#css-variables