1、什么是字体图标 icon font 及使用场景css
从百度百科一下什么事icon font,没有解析。那就用在使用过程的对字体图标的理解,解释一下。html
字体图标就是利用字体来显示网页中的的纯色图标,或者是特殊字体。举个栗子,以下图css3
这张图的三个小icon,都是使用字体图标的,若是不是使用字体图标,多是6个小图片,可能优化以后就是把这6个小图片作成雪碧图,还好,如今使用compass能够自动生成雪碧图,也是省了一大功夫啊。那么问题来了,若是是作成雪碧图,相对于三个字体来讲,无疑体积是大的,那么对待这种纯色的图标,使用字体图标就最适合不过了。千万别开心的开心,下面有坑...(留点悬念)。算法
2、使用字体图标的优缺点浏览器
如今作的页面大部分是响应式设计的,在不一样的终端显示,同一个icon在大屏终端确定就比小屏的大。svg
此处引用w3cplus某篇文章曾经总结的,由于总结的已经很完整的归纳了他的优势。工具
举个栗子~字体
这里的图标被我放大了不少,可是并无失真。这就是其中一个优势,能够任意缩放。优化
有好必有坏,世间万物相辅相成。网站
缺点就是:
一、制做用于生成icon font的svg比较麻烦
二、不适合多色彩的图标,多色彩的图片仍须要使用图片
3、字体图标的原理是什么
在生成字体文件的工具上,导入咱们的svg图片,就能够生成对应的字体文件。包括调用图标的css。真的好神奇。
在这些小icon命名为icon-tick的svg这个进入大熔炉的时候,是根据什么算法将这个content的16进制编码跟每个className对应起来。而后只用使用这个icon-tick的className,就会显示出图标来。实在神奇。
这一块之后搞懂了补上。
4、怎么使用字体图标
生成字体图标的工具网站推荐有两个:
https://icomoon.io/ (我如今使用)
http://fontawesome.io/(很知名的字体图标网站)
成功使用字体图标的步骤以下:
一、跟设计师拿到小icon的svg图片,而后例如命名为icon-tick.svg,而后在icomoon.io导入。
看到如图:
二、此时咱们能够查看一下,如今经过这个生成字体图标生成的图标代码是什么。以下图:
三、 点中你想查看的icon,而后点击Generate Font,此时就看到代码了。
四、把字体文件下载下来,一会引入到页面中
解压后,把这四个文件拷贝到项目的font文件夹。
个人font文件夹和css资源的放在同一级
而后就从download的文件中找到style.css把样式,以下图,拷贝到本身的css文件中,这样在html文件引入这个css文件以后,只要在html文件中添加icon-tick就能够显示这个字体图标,就是这么愉快的使用上字体图标了。
5、结束语
字体图标在多终端显示仍是比较有优点的。不再用担忧放大图标显示模糊,也不用担忧在苹果的视网膜屏幕模糊,由于它是矢量的。因此若是站点中不少图标是纯色的,推荐使用字体图标。
20170228补漏写的坑
事情通过是这样的,我作一个跑流程的页面,会有步骤二那里可能会有“扣款”“未全额扣款”“等待扣款”等,因此对应的icon会不一致,须要我在不一样的状态修改一下icon。下图:
能够看到生成的css文件,有不少icon对应的十六进制代码,
.icon-feedback:before{content: "\e900"}
.icon-choose:before{content:"\e609"}
个人想法:
那要切换很容易啊,跟咱们平时切换雪碧图时同样修改background-position的值就好。因此要切换字体图标同样的道理嘛,就是修改一下content对应的十六进制的代码。完美解决!
可是你肯定这里的编码是固定不变的吗?咱们的icon会不断的被加进来,那么这里的编码会惟一不变吗?答案是否认的。当你从你的svg里面删除或添加一个icon,那么这里的其余icon的content对应的编码就会发生微小变化,也就是说坑爹咯,你若是使用修改content的值去切换icon,那就是掉坑了,切记不能这样作!!
缘由:https://icomoon.io/利用工具生成字体文件时,由于你icon的增减以后会从新编码。
正确的作法:生成的字体文件,拷贝这些css样式到咱们的文件里,而后调用的时候就使用这些icon的className,千万不要去修改content的内容。当你要根据不一样状态显示不一样的icon的话,那就只能麻烦一点咯,顺便把这个icon的class也切换了。
参考文章:
http://www.w3cplus.com/css3/icon-fonts.html
https://isux.tencent.com/icon-font.html
写好代码,快乐生活,噢耶