Tha*_*yen 5 javascript reactjs webpack next.js tailwind-css
在我的 Next.js (9.4.4) / Tailwind.css (1.4.6) 项目中,我使用了一种名为 SpaceGrotesk 的自定义字体。为了使其正常工作,我将字体设置为 my public/fonts/spaceGrotesk
,然后按如下方式配置文件:
// next.config.js
module.exports = {
cssModules: true,
webpack: (config, options) => {
config.node = {
fs: "empty",
};
config.module.rules.push({
test: /\.(png|woff|woff2|eot|ttf|svg)$/,
use: [
options.defaultLoaders.babel,
{
loader: "url-loader?limit=100000",
},
{
loader: "file-loader",
},
],
});
return config;
},
};
Run Code Online (Sandbox Code Playgroud)
/** tailwind.css */
@tailwind base;
@tailwind components;
@tailwind utilities;
@font-face {
font-family: SpaceGrotesk;
font-weight: 400;
font-display: auto;
src: url(../public/fonts/spaceGrotesk/SpaceGrotesk-Regular.woff) format("woff");
}
Run Code Online (Sandbox Code Playgroud)
// tailwind.config.js
module.exports = {
purge: {
mode: "all",
content: [
"./components/**/*.js",
"./Layout/**/*.js",
"./pages/**/*.js"
],
},
important: true,
theme: {
extend: {
fontFamily: {
paragraph: ["Crimson Text, serif"],
spaceGrotesk: ["SpaceGrotesk, sans-serif"],
},
},
},
};
Run Code Online (Sandbox Code Playgroud)
我曾经在控制台上显示导入错误时遇到很多麻烦,但全部修复了。然而现在,我仍然没有得到正确的字体。控制台没有显示任何警告,检查员似乎说字体已正确加载,但仍使用备用字体(sans-serif)而不是SpaceGrotesk。
导入字体时我做错了什么?
moo*_*oxl 13
为了将您自己的字体集成到您的 Next 项目中,您不需要 npm 模块形式的另一个依赖项。
要获取 globals.css 中的字体,您必须将该字体放入 public 文件夹中。然后,将字体集成到 globals.css 中,将其提供给 tailwind.config.js 中的 CSS 框架。之后,您只需将其添加到相应的元素中,或者全局定义它。
全局变量.css
@tailwind base;
@tailwind components;
@tailwind utilities;
@font-face {
font-family: "Custom";
src: url("/CustomFont.woff2");
}
body {
@apply font-custom; //if u want the font globally applied
}
Run Code Online (Sandbox Code Playgroud)
tailwind.config.js
module.exports = {
purge: ["./pages/**/*.{js,ts,jsx,tsx}", "./components/**/*.{js,ts,jsx,tsx}"],
darkMode: false,
theme: {
extend: {
fontFamily: {
custom: ["Custom", "sans-serif"]
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
感谢这个next-fonts
包,我终于解决了这个问题:
安装next-fonts
:
npm install --save next-fonts
Run Code Online (Sandbox Code Playgroud)
将其导入next.config.js
:
// next.config.js
const withFonts = require("next-fonts");
module.exports = withFonts({
webpack(config, options) {
config.node = {
fs: "empty",
};
config.module.rules.push({
test: /\.(png|woff|woff2|eot|ttf|svg)$/,
use: [
options.defaultLoaders.babel,
{
loader: "url-loader?limit=100000",
},
{
loader: "file-loader",
},
],
});
return config;
},
});
Run Code Online (Sandbox Code Playgroud)
将文件放在public
文件夹中的任意位置。例如,我将 SpaceGrotesk 字体放入public/fonts/spaceGrotesk
.
使用 @font-face 将它们导入到 CSS 中:
// tailwind.css
@font-face {
font-family: "SpaceGrotesk";
font-weight: 400;
src: url(/fonts/spaceGrotesk/SpaceGrotesk-Regular.woff) format("woff");
}
Run Code Online (Sandbox Code Playgroud)
/public
请注意,URL前面没有。这就是我遇到问题的原因。
就像使用其他字体一样使用您的字体:
// tailwind.css
a {
font-family: "SpaceGrotesk";
}
Run Code Online (Sandbox Code Playgroud)
您可以将字体添加到您的配置中,以便您可以使用该类font-space-grotesk
:
// tailwind.config.js
module.exports = {
// ...The rest of your config here...
theme: {
extend: {
fontFamily: {
"space-grotesk": ["SpaceGrotesk, sans-serif"],
},
},
},
};
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12646 次 |
最近记录: |