网页中第三方字体加载方案优化

使用如下方法来解决过大,造成网页文字成空白

font-display

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

兼容性如下

使用方法

  • @font-face {
  • font-family: 'family-name';
  • src: url('${url}');
  • font-display: swap;
  • }
  • auto:用浏览器默认的行为;
  • block:浏览器首先使用隐形文字替代页面上的文字,并等待字体加载完成再显示;
  • swap:如果设定的字体还未可用,浏览器将首先使用备用字体显示,当设定的字体加载完成后替换备用字体;
  • fallback:与 swap 属性值行为上大致相同,但浏览器会给设定的字体设定加载的时间限制,一旦加载所需的时长大于这个限制,设定的字体将不会替换备用字体进行显示。Webkit 和 Firefox 中设定此时间为 3s;
  • optional:使用此属性值时,如果设定的字体没有在限制时间内加载完成,当前页面将会一直使用备用字体,并且设定字体继续在后台进行加载,以便下一次浏览时可以直接使用设定的字体。

CSS Font Loading API

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

  • 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);
  • });

 

 

♏文章资源部分来源于互联网,仅供学习交流使用,若要商业化使用,请支持正版
♏若不听劝告,出现任何后果,均于本站无关
♏如果您喜欢本站,点击这儿不花一分钱捐赠本站
♏本文地址:http://blog.17u7.com/332.html
THE END
分享
二维码
< <上一篇
下一篇>>