前言
作为前端,跟图片,特别是图标打交道是经常的事情,经历过最初的一个个小图方式到使用sprite图,接着就是data-uri,再到现在的web font方式了。
从这里看感觉技术变迁得好快呀~
但是不管怎么说归根结底,这些东西都是为了提升性能和效率的。本质就是优化的事情,如何尽量减小网络请求,如何最好最方便的管理自己的项目。毕竟维护一个东西才是重中之重。
Web Font
在这,我们首先需要知道什么是Web Font。从字面上的意思来看,本质就是font,也就是字体文件。然后是Web,也就是供Web调用的。
然后就可以总结成一句话:在网页上使用的字体文件。
浅谈制作过程
关于制作,这里面我躺过很多坑。最开始一直纠结在使用Photoshop把做好的图通过一个工具自动转为icon。但后来都失败了。
- 尝试过png转svg,针对简单图形,都还可以,稍微复杂一点就不行了,画得都不对。而且生成的图标大小是无规律的。
- Photoshop矢量图层转svg,又失败了,因为很多图标的制作都不是在一个图层上。(另外需要说明一下,Photoshop CC 2015支持图层转svg)
最后的最后,还是从头来,最终确定按照阿里的Web Font制作规范执行。
总结成三步:
- 制作对应的AI文件。
- 通过AI文件生成svg文件。
- 通过svg文件生成我们需要的字体文件。
这里简单说一下什么是svg。svg别名就是Scalable Vector Graphics
(可伸缩的矢量图形)。
它不是图片,它是描绘一系列曲线或者直线的代码。本质上是继承XML的标记性语言。看个例子:
前端实现
当我们在平台上传svg文件后,再下载字体文件时,平台都已经帮我们生成好了对应的样式,如下:
引入上面的css,然后在html中,写上:<i class="icon-xx"></i>
,打开一下,图标就出现了。
当然,为了兼容不支持属性选择器(如:[class=^="icon-]
)和伪类(如::after
)的浏览器,我们需要额外处理一下对应的CSS和html,这个不在本文讨论访问内而且不支持的浏览器会越来越少。。
那使用Web Font有什么好处和坏处呢?
好处
- 占空间小,除了一些特别复杂的图标外,一般一个简单的图标大小应该在0.3KB以内。
- 可大可小不失真,无论放大放小都不失真。
- 网络请求少,只需要一次网络请求加载。
- 维护成本低,只需要维护整个字体文件即可。
- 减轻设计师切图时间,不再需要设计师切某几个固定尺寸的图片以及不同颜色的图(比如hover和active效果),不再为图可能切大或切小而苦恼。
坏处
- 只支持纯色。
- 程序方面在用到图标时需要额外处理(当然,web前端这块,平台生成时已经帮忙统一处理掉了)。
适用范围
当然,如果仅仅认为它只能在Web端使用话,那你就错了。它是全平台通用的。
不管曾经的你身处何方,只要有人机交互,需要界面的地方,都是它应用的地方。
只是Web环境比起其他平台来说它非常特别,它需要支持不同的平台,导致它需要生成不同平台的字体文件。
这里,IOS和Android端就轻松了,它只需要一个ttf
字体文件即可。
IOS和Android端的应用
具体请参考:阿里的图标应用教程 http://www.iconfont.cn/help/iconuse.html
最后
希望在项目中更多的适用Web Font。更好的提升开发效率。
原文网址:https://yss.github.io/2015/11/17/introduce-the-web-font.html
转载请注明。谢谢~