网页中第三方字体加载方案优化
使用如下方法来解决过大,造成网页文字成空白
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
♏若不听劝告,出现任何后果,均于本站无关
♏如果您喜欢本站,点击这儿不花一分钱捐赠本站
♏本文地址:http://blog.17u7.com/332.html
THE END
二维码