Next.js 如何使用本地自定义字体

本地字体

使用本地字体文件十分简单,只需要指定好字体文件的加载路径,然后通过 className 设置给需要自定义字体的元素即可。

app/layout.tsx

tsx 复制代码
import localFont from 'next/font/local'
 
// Font files can be colocated inside of `app`
const myFont = localFont({
  src: './my-font.woff2',
})
 
export default function RootLayout({
  children,
}: {
  children: React.ReactNode
}) {
  return (
    <html lang="en" className={myFont.className}>
      <body>{children}</body>
    </html>
  )
}

结合 Tailwind CSS

首先加载自定义字体文件,并且通过 variable 属性指定 CSS variable

app/layout.tsx

tsx 复制代码
export const myFont = localFont({
  src: './my-font.woff2',
  variable: '--font-my',
});

export default function RootLayout({
  children,
}: {
  children: React.ReactNode;
}) {
  return (
    <html
      lang="en"
      className={cn(
        myFont.variable,
      )}
    >
      <body>
       {children}
      </body>
    </html>
  );
}

然后在 Tailwind 配置中配置扩展自定义字体

tailwind.config.js

js 复制代码
/** @type {import('tailwindcss').Config} */
module.exports = {
  theme: {
    extend: {
      fontFamily: {
        my: ['var(--font-my)'],
      },
    },
  },
}

在需要使用该自定义字体的地方都可以通过 className="font-my" 使用

参考链接

相关推荐
fanruitian14 分钟前
python 进程 线程
java·前端·python
ZoeLandia18 分钟前
React03:useState 与不可变更新
前端·react.js·typescript·react
蒲公英内测分发34 分钟前
智能手表卖出去后,包装、说明书和官网里的 App 下载入口怎么统一?
前端·人工智能·测试工具·智能家居·智能硬件·智能手表
溪语流沙42 分钟前
【Web全栈进阶】监控与告警:线上系统的“体检报告”
前端·vue.js·python·fastapi
鬼手点金1 小时前
单轮对话:最简单的 API 调用
java·服务器·前端·javascript·react.js·servlet·tomcat
燕落南枝1 小时前
CSS 字体样式:颜色、字体族、倾斜、加粗与装饰
前端·css
鬼手点金2 小时前
消息的四种角色
java·前端·人工智能·git·深度学习
陈随易2 小时前
副业搞钱之代办永不过时
前端·后端·程序员
古夕2 小时前
同样的 font-weight,为什么这个项目的字体就是更细?
前端·javascript
程序员20072 小时前
抽卡玄学?不,是数学:保底机制下出货概率到底怎么算
前端