在编写网站的时候,或多或少都会用到一些网络上的字体,CSS 3 中虽然加入了对 Web Fonts(网络字体)的支持,但是浏览器对它们的加载和默认处理方式会极大的影响网站的性能和用户体验 。例如默认情况下,在 Web Fonts 加载时,使用该字体的地方会显示空白,直到字体下载完成之后才会显示,这时通过改变 CSS 中的 font- 属性,就可以避免这个问题 。
在介绍 font- 之前,先了解一下什么是 Web Fonts 。在以前使用 CSS 指定字体时只能使用用户电脑本地上现有的字体,而由于每个用户电脑上的字体可能都不一样,所以能用的基本上就是操作系统内置的一些字体,例如微软雅黑,宋体,苹果苹方,这些也叫做安全字体(Web Safe Fonts) 。为了使字体显示正常,我们一般会通过 font- 属性同时指定多个字体,如果第一个字体没有在操作系统中找到,就会使用下一个后备字体(Font ),以此类推:
* {
font-: " SC", " Yahei", sans-serif;
}
后来,CSS 开始支持 @font-face 这个指令,可以加载自定义的字体文件,这个时候可以把字体随网站一起发布,用户在浏览网站的时候,会下载 @font-face 中指定的字体 。例如下边的代码加载了 fonts 目录下的字体:
@font-face {
font-: '';
font-style: ;
font-: 500;
src: url(/fonts/.woff2) ('woff2');
}
src 属性用于指定字体的位置,其中 url 函数也接受网络地址,来加载第三方提供的字体文件,这样也催生了像Fonts 这样的云字体服务 。不过,基本上只有英文字体才适合 Web Fonts,因为它只有 26 个英文字母外加数字,体积小,适合在网络上传输,而中文光常用的就有 3000 个字符,所以一般只使用操作系统自带的,不过现在也有字体服务会根据网站上所使用的文字去动态的生成字体文件 。
浏览器加载 Web Fonts 时按顺序会有三个时期:
阻塞期(Block ) 。在此期间如果字体没有加载完成,那么浏览器会使用 font- 指定的字体列表中的后备字体()进行渲染,但是显示为空白,也就是对于用户是不可见的 。在此期间字体加载完成之后才能正常显示该字体 。
交换期(Swap ) 。跟阻塞期类似,但是在这个时期内,它会在字体加载时,先用后备字体渲染文本并显示出来(而不是显示空白),在此期间字体加载完成之后才能正常的显示该字体 。
文章插图
失败期( ) 。如果字体加载失败,则使用后备字体显示文本 。
至于每个时期有多长,是根据 font- 属性的值来确定的 。
font- 确切的说不是 CSS 属性,而是专用于 @font-face 指令的描述符,它可以取如下几个值:
auto。这个是 font- 的默认值,字体的加载过程由浏览器自行决定,不过基本上和取值为 block 时的处理方式一致 。
block。在字体加载前,会使用备用字体渲染,但是显示为空白,使得它一直处于阻塞期,当字体加载完成之后,进入交换期,用下载下来的字体进行文本渲染 。不过有些浏览器并不会无限的处于阻塞期,会有超时限制,一般在 3 秒后,如果阻塞期仍然没有加载完字体,那么直接就进入交换期,显示后备字体(而非空白),等字体下载完成之后直接替换 。
swap。基本上没有阻塞期,直接进入交换期,使用后备字体渲染文本,等用到的字体加载完成之后替换掉后备字体 。
。阻塞期很短(大约100毫秒),也就是说会有大约 100 毫秒的显示空白的后备字体,然后交换期也有时限(大约 3 秒),在这段时间内如果字体加载成功了就会替换成该字体,如果没有加载成功那么后续会一直使用后备字体渲染文本 。
- 薄荷怎么吃 薄荷清凉降温,教你如何巧妙食用薄荷!
- 枸杞有什么作用 这东西很便宜却是补肾神品,男女都需要,太厉害了!
- 黑芝麻怎么吃最好 黑芝麻功效作用多,这样吃最健康
- 网易严选超级会员有什么用(免费获得网易VIP邮
- 盘点各种实用型的微商引流法 微商引流方法有哪些
- 嘴皮干用什么代替唇膏 嘴皮干可以用凡士林吗
- 用化妆棉敷爽肤水要敷多久 怎么用化妆棉湿敷爽肤水
- 缱绻什么意思?缱绻怎么用
- 奥司他韦哺乳期能吃吗 要如何服用?
- 美的空调质量用户评价(美的冷静星二代优缺点