icon 的前生今世 & iconfont 的晋级之路

   布吉岛为啥起了个这么文(dou)艺(bi)的名字,话不多说,开始总结??。

1??发展过程

1. 雪碧图:

起初,大部分图标都是用 img 来实现的。渐渐发现一个页面的请求资源中图片 img 占了大部分,所以为了优化有了image sprite 就是所谓的雪碧图,就是将多个图片合成一个图片,然后利用 css 的 background-position 定位显示不同的 icon 图标。

但这个合成小图片为雪碧图的方式也有一个很大的痛点,维护困难。每新增一个图标,都需要改动原始图片,还可能不小心出错影响到前面定位好的图片,而且一修改雪碧图,图片缓存就失效了,久而久之就不知道该怎么维护了。

2. Font Awesome:

后来渐渐地一个项目里几乎不会使用任何本地的图片了,而使用一些 font 库来实现页面图标。常见的如 Font Awesome ,使用起来也非常的方便,但它有一个致命的缺点就是找起来真的很不方便,图标少,定制性不友善。

3. iconfont:

iconfont 更加强大,它阿里做的开源图库,还有专门的 github issue,图标数量很多,不仅有几百个公司的开源图标库,还有各式各样的小图标,还支持自定义创建图标库 ,给前端开发带来了很大便利。

2??iconfont的3种使用方式

1. unicode:

优势: 兼容性最好,支持ie6以上。并且能按照字体的方式调整图标大小,颜色。

劣势: 不支持多色图标。在不同设备的浏览器渲染会有差别,图标显示的位置,大小可能受css影响,不好调整。书写不直观,语意不明确。

使用方法:引入自定义字体 `font-face;定义使用iconfont的样式;挑选相应图标并获取字体编码,应用于页面

2. font-class:

特点: 兼容性良好,支持ie8+,相比于unicode语意明确,书写更直观

使用方法:拷贝项目下面生成的fontclass代码; 挑选相应图标并获取类名,应用于页面

主要原理:其实是和 unicode 一样的,它只是多做了一步,将原先&#xe604这种写法换成了.icon-QQ,它在每个 class 的 before 属性中写了unicode,省去了人为写的麻烦。如 .icon-QQ:before { content: "\e604"; }

坑: 一个项目中用到了两组font-class,一定要注意命名空间的问题。

3. symbol:

支持多色图标;支持font-size调整样式;支持ie9+;可用css实现动画;减少http请求;矢量,缩放不失真 ;可以精细控制SVG图标部分细节

使用svg-icon的好处:再也不用发送woff|eot|ttf| 这些很多个字体库请求了,svg都可以内联在html内。

使用方法: 第一步:拷贝项目下面生成的symbol代码,引入 ./iconfont.js;加入通用css代码(引入一次就行);挑选相应图标并获取类名,应用于页面

扩展:svg 是一个真正的矢量,不管你再怎么的放缩它都不会失真模糊,现在ui设计师平时都喜欢使用 sketch 来工作,只要轻松一键就能导出 svg 了,所以 svg 也更受设计师的青睐。

参考文档: iconfont    Font Awesome  未来必热:SVG Sprite技术介绍

原文地址:https://www.cnblogs.com/catherLee/p/10069466.html

时间: 2024-11-10 15:43:46

icon 的前生今世 & iconfont 的晋级之路的相关文章

HBase GC的前生今世 - 身世篇

网易视频云是网易倾力打造的一款基于云计算的分布式多媒体处理集群和专业音视频技术,提供稳定流畅.低时延.高并发的视频直播.录制.存储.转码及点播等音视频的PAAS服务,在线教育.远程医疗.娱乐秀场.在线金融等各行业及企业用户只需经过简单的开发即可打造在线音视频平台.现在,网易视频云的技术专家给大家分享一则技术文:HBase GC的前生今世 - 身世篇. 在之前的HBase BlockCache系列文章中已经简单提到:使用LRUBlockCache缓存机制会因为CMS GC策略导致内存碎片过多,从而

区块链的前生今世

今晚九点公开课直播为大家讲解区块链的前生今世,参与方式在文章底部. 目录 历史与现状 比特币与区块链 智能合约与以太坊 币圈与链圈 主讲师:PC 2012年接触比特币,炒币.挖矿.量化.做市场 豆瓣.百度.360.第四范式 知乎<面向工资编程> 投身区块链基础设施创业 历史与现状 比特币和区块链出现的历史,就好比是人类在集齐龙珠的过程 龙珠一共有七颗 <货币的非国家化> Merkle Tree 椭圆曲线加密算法 Proof of Work P2P 技术 SHA-256 中本聪 19

Java NIO 的前生今世 之四 NIO Selector 详解

Selector Selector 允许一个单一的线程来操作多个 Channel. 如果我们的应用程序中使用了多个 Channel, 那么使用 Selector 很方便的实现这样的目的, 但是因为在一个线程中使用了多个 Channel, 因此也会造成了每个 Channel 传输效率的降低.使用 Selector 的图解如下: 为了使用 Selector, 我们首先需要将 Channel 注册到 Selector 中, 随后调用 Selector 的 select()方法, 这个方法会阻塞, 直到

V2X的前生今世

1.车联网的发展 第一阶段:局部交通管控 以单点或局部路面交通控制及交通流监测系统为核心,提高局部道理的通行效率: 第二阶段:在线导航/车载娱乐 车-同广域通信,通过车内通信模块与蜂窝通信,实现在线导航,远程诊断与控制.信息娱乐.车辆报警等应用: 第三阶段:辅助驾驶 V2X.V2I短程通信,实现提醒甚至控制车辆避免可能的碰撞等风险,提升车辆安全及交通效率(基本应用集) 第四阶段:自动驾驶 真正实现自动控制.无人驾驶.永无事故,达到人.车.路.环境真正融合,是未来的ITS 当前我们处于第二阶段到第

RCNN,Fast RCNN,Faster RCNN 的前生今世:(2)R-CNN

Region CNN(RCNN)可以说是利用深度学习进行目标检测的开山之作.作者Ross Girshick多次在PASCAL VOC的目标检测竞赛中折桂,2010年更带领团队获得终身成就奖,如今供职于Facebook旗下的FAIR. 这篇文章思路简洁,在DPM方法多年平台期后,效果提高显著.包括本文在内的一系列目标检测算法:RCNN,Fast RCNN, Faster RCNN代表当下目标检测的前沿水平,在github都给出了基于Caffe的源码 思想 本文解决了目标检测中的两个关键问题. 问题

关于http协议前生今世(转自“博客:老李的地下室”)

申明:此博文转自http://www.cnblogs.com/li0803/archive/2008/11/03/1324746.html(非原创) Author :Jeffrey 引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTT

RCNN,Fast RCNN,Faster RCNN 的前生今世:(1) Selective Search

Selective Search for Object Recoginition 这篇论文是J.R.R. Uijlings发表在2012 IJCV上的一篇文章,主要介绍了选择性搜索(Selective Search)的方法.物体识别(Object Recognition),在图像中找到确定一个物体,并找出其为具体位置,经过长时间的发展已经有了不少成就.之前的做法主要是基于穷举搜索(Exhaustive Search),选择一个窗口(window)扫描整张图像(image),改变窗口的大小,继续扫

HTML 5 History API的”前生今世”

原文:An Introduction To The HTML5 History API 译文:关于HTML 5 History API 的介绍 译者:dwqs History是有趣的,不是吗?在之前的HTML版本中,我们对浏览历史记录的操作非常有限.我们可以来回使用可以使用的方法,但这就是一切我们能做的了. 但是,利用HTML 5的History API,我们可以更好的控制浏览器的历史记录了.例如:我们可以添加一条记录到历史记录的列表中,或者在没有刷新时,可以更新地址栏的URL. 为什么介绍Hi

RCNN,Fast RCNN,Faster RCNN 的前生今世:(3) SPP - Net

SPP-Net是出自2015年发表在IEEE上的论文-<Spatial Pyramid Pooling in Deep ConvolutionalNetworks for Visual Recognition>. 池化空间金字塔的核心是: 1.因为,cnn要求图像固定大小,所以要做crop和warp.是因为会影响FC层的权重训练. 当网络输入的是一张任意大小的图片,这个时候我们可以一直进行卷积.池化,直到网络的倒数几层的时候,也就是我们即将与全连接层连接的时候就需要用到(最大)池化空间金字塔,