这正是我们制作injectGlobal
. 如果您查看我们的文档,他们会说:
我们不鼓励使用它。每个应用最多使用一次,包含在一个文件中。这是一个逃生舱。仅将其用于罕见的@font-face
定义或身体造型。
所以我要做的是创建一个名为的 JS 文件global-styles.js
,其中包含以下代码:
// global-styles.js
import { injectGlobal } from 'styled-components';
injectGlobal`
@font-face {
font-family: 'My custom family';
src: url('my-source.ttf');
}
`
正如你所看到的,我们在这里所做的只是注入一些全局样式——在这种情况下@font-face
。完成这项工作所需的最后一件事是将此文件导入您的主入口点:
// index.js
import './global-styles.js'
// More stuff here like ReactDOM.render(...)
这意味着你的 font-face 只被注入一次,但你的所有组件仍然可以使用font-family: 'My custom family'
!
这样做会给你一个不可见文本的闪烁(FOIT),但这styled-components
与 - 如果你使用香草 CSS 是一样的。要摆脱 FOIT,需要更高级的字体加载策略,而不仅仅是@font-face
ing。
由于这与 无关styled-components
,我强烈建议观看这两集前端中心以了解更多关于如何最好地做到这一点:“制作 Web 字体后备”和“西方最快的 Web 字体加载器”!