css - 自定义 TTF 字体在 React 应用程序中加载缓慢

标签 css reactjs performance fonts

我正在尝试在我的 React 应用程序中包含自定义字体(使用 create-react-app 制作)。它似乎有点工作,但仅在加载页面后 2-3 秒后。在此之前,文本似乎使用浏览器的默认字体(如 Times New Roman),然后在几秒钟后切换为自定义字体。有人可以向我解释为什么会发生这种情况以及我需要做些什么来解决这个问题吗?

我正在将字体导入我的顶级 App.js 文件,如下所示:

import './fonts/tarrgetital.ttf';
import './App.scss';

并在我的 App.scss 文件中声明它,如下所示:

@font-face {
    font-family: 'tarrgetital';
    src: local('tarrgetital'), url(./fonts/tarrgetital.ttf) format('truetype');
}

h2 {
    font-family: tarrgetital;
}

最佳答案

加载网络字体的延迟是一个预期的行为问题,它的发生是因为浏览器在检测到具有与字体规则匹配的 CSS 选择器的 DOM 元素时加载字体,而这发生在 HTML 文件和所有CSS 文件已下载到客户端。这是一种延迟加载机制。有一些解决方案可以改善这种行为:

  • 使用优化的网络字体文件:

    为了获得更好的性能,您可以交换 TTF中的字体文件 字体与 woff woff2 文件格式。这些格式是 压缩在 gzip 中,从而减少文件大小和初始 客户端下载时间。如果这些格式不可用 您可以使用许多在线工具之一来转换字体文件(谷歌 TTF to woff2 ).


关于css - 自定义 TTF 字体在 React 应用程序中加载缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59519085/

相关文章:

angular - 仅运行一次 Angular 更改检测并停止检测该组件的更改

带有图像的 HTML 表格

javascript - 从按钮中间打开下拉菜单

javascript - 如何使用 React.js 中的 Fetch API 将数据发布到数据库

javascript - 如何将事件对象传递给 React 事件处理函数?

Java lambda 比匿名类慢 20 倍

javascript - 使用 Javascript 进行快速排序的大 O 问题

jquery - 使用 MMenu 将 "menu"替换为 Logo

html - 调整浏览器大小时能否避免 float 元素移动?

javascript - 无法从 JS 获取数组到我的 Spring 引导 Controller ?