iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何加载web字体
  • 316
分享到

如何加载web字体

2023-06-09 11:06:06 316人浏览 独家记忆
摘要

本篇文章给大家分享的是有关如何加载WEB字体,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一般来说,开发者对网页字体使用会相对接触比较少一些,使用最多也无非是 font-fam

本篇文章给大家分享的是有关如何加载WEB字体,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

一般来说,开发者对网页字体使用会相对接触比较少一些,使用最多也无非是 font-family ,以及可能会加载几个网络字体。

@font-face {  font-family: 'family-name';  src: url('${url}');}.main {  font-family: 'family-name';}

然而实际开发过程中,往往会遇到更多的问题,比如切换字体加一个loding效果。

如何加载web字体

这里主要总结一下web字体加载存在的问题,以及最佳实践。

FOIT

一般情况下,在字体文件加载完成之前,浏览器会使用备用字体来显示文字,这被称为FOIT(Flash of Unstyled Text),然而貌似除了IE,其他浏览器都会等待3秒才展示系统字体,这样就会出现一个长达3秒的文字闪白现象,这种用户体验就很差了。

font-display

为了解决这种,CSS Fonts Module Level 3 中添加了一个 font-display 属性,这个属性可以让浏览器立即使用备用字体,在web字体加载完成之后立即替换,并重新渲染。

如何加载web字体

其相关介绍如下:

  • auto:使用浏览器默认的行为;

  • block:浏览器首先使用隐形文字替代页面上的文字,并等待字体加载完成再显示;

  • swap:如果设定的字体还未可用,浏览器将首先使用备用字体显示,当设定的字体加载完成后替换备用字体;

  • fallback:与 swap 属性值行为上大致相同,但浏览器会给设定的字体设定加载的时间限制,一旦加载所需的时长大于这个限制,设定的字体将不会替换备用字体进行显示。Webkit 和 Firefox 中设定此时间为 3s;

  • optional:使用此属性值时,如果设定的字体没有在限制时间内加载完成,当前页面将会一直使用备用字体,并且设定字体继续在后台进行加载,以便下一次浏览时可以直接使用设定的字体。

所以我们如下使用即可:

@font-face {  font-family: 'family-name';  src: url('${url}');  font-display: swap;}

CSS Font Loading API

相对的在javascript层面上也有对应的字体解决方案,CSS Font Loading api可以监听加载事件,在加载完成后通过替换class也可以达到 font-display: swap的效果。

如何加载web字体

API使用比较简单,不多做介绍:

const font = new window.FontFace('fontFamilyName', 'url(${url})');document.fonts.add(font);font.load().then(info => {  document.body.style.fontFamily = 'fontFamilyName';}).catch(err => {  console.log(err);});

AJAX + Base64

以上两种方法都可以解决网络字体闪白的问题,CSS Font Loading API还可以监控字体加载过程,便于做动态字体加载或者字体切换之类的功能。

以上两种方案都是新方案,会有一些兼容性,除此之外,还可以使用ajax加载字体,再转换为base64的方式来实现字体加载过程的监听。

function fetchFont(url) {  return fetch(url)    .then(response => {      if (response.status !== 200) {        return Promise.reject(response);      }      return response.blob();    })}function font2base64(blob) {  return new Promise((resolve, reject) => {    const reader = new FileReader();    reader.onloadend = _ => {      resolve(reader.result);    };    reader.onerror = err => {      reject(err);    }    reader.readAsDataURL(blob);  });}fetchFont(url)  .then(blob => {    return font2base64(blob);  })  .then(res => {    const base64Url = ('' + res).replace('data:application/octet-stream;base64', 'data:application/x-font-woff;charset=utf-8;base64');    // 生成font-face定义,不多写    document.body.style.fontFamily = 'fontFamilyName';  })  .catch(err => {    console.log(err);  });

这里以 fetch 为例,你可以使用其他AJAX框架

另外这里生成的base64字符串需要处理一下,这里生成的MIME是 application/octet-stream ,而 application/octet-stream 指的是 未知的应用程序文件,需要自己手动指定一下类型为字体,不然字体定义会失效。

如何加载web字体

以上就是如何加载web字体,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网精选频道。

--结束END--

本文标题: 如何加载web字体

本文链接: https://www.lsjlt.com/news/255904.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何加载web字体
    本篇文章给大家分享的是有关如何加载web字体,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一般来说,开发者对网页字体使用会相对接触比较少一些,使用最多也无非是 font-fam...
    99+
    2023-06-09
  • 在Vue.js中如何加载字体
    小编给大家分享一下在Vue.js中如何加载字体,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!添加字体不应该对性能产生负面影响。在本文中,我们将探讨在 Vue 应用...
    99+
    2023-06-14
  • ubuntu如何加载中文字体
    ubuntu加载中文字体的方法:在ubuntu上打开终端窗口。输入以下命令查看系统类型。cat /proc/version查看中文字体。fc-list :lang=zh-cn如果出现拉乱码,则说明需要安装中文字体。//安装命令sudo ap...
    99+
    2024-04-02
  • css如何加载外部字体文件
    这篇文章主要介绍“css如何加载外部字体文件”,在日常操作中,相信很多人在css如何加载外部字体文件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”css如何加载外部字体文件”...
    99+
    2024-04-02
  • java swing如何实现加载自定义的字体
    这篇文章主要介绍了java swing如何实现加载自定义的字体,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。java swing 加载自定义的字体在实际开发中, 我们需要把字...
    99+
    2023-06-25
  • Dreamweaver如何添加字体
    这篇文章主要介绍了Dreamweaver如何添加字体,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。方法如下首先打开Dreamweaver界面,你想换字体的话,现在不用先选中。...
    99+
    2023-06-08
  • html字体如何加粗
    小编给大家分享一下html字体如何加粗,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!html字体加粗的方法:首先创建一个HTML示例文件;然后通过p标签创建一个普...
    99+
    2023-06-15
  • 如何使用WEB中文字体
    这篇文章主要讲解了“如何使用WEB中文字体”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用WEB中文字体”吧!在 Web 上应用字体是一项基本技术,同时也是一门艺术。对于英文字体来说可...
    99+
    2023-06-08
  • windows coreldraw如何下载字体
    这篇文章主要介绍“windows coreldraw如何下载字体”,在日常操作中,相信很多人在windows coreldraw如何下载字体问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”windows cor...
    99+
    2023-07-01
  • html如何让字体加粗
    这篇文章给大家分享的是有关html如何让字体加粗的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。html加粗字体的方法:1、使用“<b>”标签,语法<b>需要加粗的文本</b>”...
    99+
    2023-06-15
  • word字体库如何添加
    这篇文章主要讲解了“word字体库如何添加”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“word字体库如何添加”吧!首先在网上下载想要使用的字体,将它解压出来。解压后,得到字体文件,复制该文...
    99+
    2023-07-02
  • css如何让字体加粗
    在css中设置字体加粗的方法:1.创建p标签;2.使用font-weight属性设置字体加粗;在css中设置字体加粗的方法首先,在页面中创建两个p标签,并添加文字用于对比;<!DOCTYPE html><html...
    99+
    2024-04-02
  • Dreamweaver cs5字体家族如何添加删除字体
    这篇文章将为大家详细讲解有关Dreamweaver cs5字体家族如何添加删除字体,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Dreamweaver想要打开字体家族,添加删除字体,方法如下在修改菜单下,...
    99+
    2023-06-08
  • html如何设置字体加粗
    小编给大家分享一下html如何设置字体加粗,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!html有什么特点1、简易性:超级文本标记语言版本升级采用超集方式,从而更...
    99+
    2023-06-14
  • css中字体如何加横线
    在css中给字体添加横线的方法:1.创建p标签;2.使用text-decoration属性添加字体横线;在css中给字体添加横线的方法首先,在页面中创建两个p标签,并添加文字用于对比;<!DOCTYPE html>&l...
    99+
    2024-04-02
  • Windows7系统如何添加字体
    如何向win7添加字体?如何安装win7字体?WindowXP系统安装字体非常方便,只需将字体文件复制到系统盘的字体文件夹中,但在Windows7系统中,安装字体的方法有所不同,但操作更简单,这里介绍Windows7系统安装字体的方法,希望...
    99+
    2023-07-17
  • 如何用css3给字体添加立体效果
    这篇文章主要讲解了“如何用css3给字体添加立体效果”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何用css3给字体添加立体效果”吧! ...
    99+
    2024-04-02
  • html如何添加字体删除线
    这篇文章主要讲解了“html如何添加字体删除线”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“html如何添加字体删除线”吧! h...
    99+
    2024-04-02
  • iOS如何手动添加新字体
    小编给大家分享一下iOS如何手动添加新字体,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!字体添加1、引入字体文件直接将下载好的字体文件拖入项目中2、配置 Info...
    99+
    2023-06-20
  • jQuery如何监听媒体加载事件?
    这篇文章将为大家详细讲解有关jQuery如何监听媒体加载事件?,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。jQuery 监听媒体加载事件 jQuery 提供了多种方法来监听媒体(图像、视频、音频)的加载...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作