字体图标(iconfont)
图片是有诸多优点的,但是缺点很明显,比如图片不但增加了总文件的大小
,还增加了很多额外的"http请求",这都会的大大降低网页的性能
。更重要的是图片不能很好的进行“缩放”,因为图片放大和缩小会失真
。 我们后面会学习移动端响应式,很多情况下希望我们的图标是可以缩放的。此时,一个非常重要的技术出现了,额不是出现了,是以前就有,是被从新"宠幸"啦。。 这就是字体图标(iconfont).
字体图标优点
可以做出跟图片一样可以做的事情,改变
透明度
、旋转度
,等..
但是本质其实是文字
,可以很随意的改变颜色、产生阴影、透明效果
等等...
本身体积更小
,但携带的信息并没有削减。
几乎支持所有的浏览器
移动端
设备必备良药...
字体图标使用流程
1. 设计字体图标
假如图标是公司单独设计,那就需要第一步了,这个属于UI设计人员的工作, 他们在 illustrator 或 Sketch 这类矢量图形软件里创建 icon图标, 比如下图:
之后保存为svg格式,然后给前端人员就好了。
如果图标是大众的,可以直接跳过第一二步,进入第三步。
2. 上传生成字体包
当UI设计人员给我们svg文件的时候,我们需要转换成我们页面能使用的字体文件, 而且需要生成的是兼容性的适合各个浏览器的。
icomoon字库(推荐
): http://icomoon.io
IcoMoon成立于2011年,推出的第一个自定义图标字体生成器,它允许用户选择他们所需要的图标,使它们成一字型。 内容种类繁多,非常全面,唯一的遗憾是
国外
服务器,打开网速较慢。
阿里icon font字库: http://www.iconfont.cn/
这个是阿里妈妈M2UX的一个icon font字体图标字库,包含了淘宝图标库和阿里妈妈图标库。可以使用AI制作图标上传生成。 一个字,免费,免费!!
fontello:http://fontello.com/
在线定制你自己的icon font字体图标字库,也可以直接从GitHub下载整个图标集,该项目也是开源的。
Font-Awesome:http://fortawesome.github.io/Font-Awesome/
这是我最喜欢的字库之一了,更新比较快。目前已经有369个图标了。
Glyphicon Halflings:http://glyphicons.com/
这个字体图标可以在Bootstrap下免费使用。自带了200多个图标。
Icons8:https://icons8.com/
提供PNG免费下载,像素大能到500PX
3. 下载兼容字体包
上传完毕, 网站会给svg图片转换为字体格式, 然后下载下来就好了
当然,也可以直接到刚才的网站上找喜欢的字体图标下载使用。
以 icomoon 为例:
- 进入网站 https://icomoon.io 点击右上角的
IcoMoon App
按钮,进入图标界面。 - (上传UI设计的svg图标)把svg文件拖拽到
untitled Set
栏中
- 单击选中需要的字体图标(也可以通过点击下面的lab,去库中寻找更多的字体图标),点击
Cenerate Font
即可跳转到字体图标到预览界面,可以通过点击下载旁边的设置按钮
进行字体图标的名称
、浏览器支持
等的设置,点击DownLoad
自动下载字体图标的压缩包。
4. 字体引入到HTML
得到压缩包之后,最后一步,是最重要的一步了, 就是字体文件已经有了,我们需要引入到我们页面中。
- 首先把 以下4个文件放入到 fonts文件夹里面,把
fonts文件夹
复制到项目中。
- 第一步:在样式里面声明字体: 告诉别人我们自己定义的字体(注意
路径
和名字
)
@font-face {
font-family: 'icomoon';
src: url('fonts/icomoon.eot?7kkyc2');
src: url('fonts/icomoon.eot?7kkyc2#iefix') format('embedded-opentype'),
url('fonts/icomoon.ttf?7kkyc2') format('truetype'),
url('fonts/icomoon.woff?7kkyc2') format('woff'),
url('fonts/icomoon.svg?7kkyc2#icomoon') format('svg');
font-weight: normal;
font-style: normal;
}
- 第二步:给盒子使用字体
span {
font-family: "icomoon";
}
- 第三步:盒子里面添加结构
span::before {
content: "\e900";
}
或者 (直接复制右侧的小手机
)
<span></span>
5. 追加新图标到原来库里面
如果工作中,原来的字体图标不够用了,我们需要添加新的字体图标,但是原来的不能删除,继续使用,此时我们需要这样做
把压缩包里面的selection.json
重新上传 (import icons 按钮
),然后选中自己想要新的图标,从新下载压缩包,替换原来文件即可。
精灵图
精灵技术产生的背景
当用户访问一个网站时,需要向服务器发送请求,网页上的每张图像都要经过一次请求才能展现给用户。
然而,一个网页中往往会应用很多小的背景图像作为修饰,当网页中的图像过多时,服务器就会频繁地接受和发送请求,这将大大降低页面的加载速度。为了有效地减少服务器接受和发送请求的次数,提高页面的加载速度,出现了CSS精灵技术(也称CSS Sprites、CSS雪碧)。
精灵技术本质
简单地说,CSS精灵是一种处理网页背景图像的方式。它将一个页面涉及到的所有零星背景图像都集中到一张大图中去
,然后将大图应用于网页,这样,当用户访问该页面时,只需向服务发送一次请求
,网页中的背景图像即可全部展示出来。通常情况下,这个由很多小的背景图像合成的大图被称为精灵图(雪碧图)。
精灵技术的使用
CSS 精灵其实是将网页中的一些背景图像整合到一张大图中(精灵图),然而,各个网页元素通常只需要精灵图中不同位置的某个小图,要想精确定位
到精灵图中的某个小图,就需要使用CSS的background-image
、background-repeat
和background-position
属性进行背景定位。
.mobile {
width: 15px;
height: 20px;
background: url(images/jd.png) no-repeat 0 -100px;
}
- 设定小图片宽高
- 加载大图片,确定小图片位置
最关键
的是使用background-position属性精确地定位
。因为坐标方向的问题,background-position属性值都<= 0
制作精灵图
CSS 精灵其实是将网页中的一些背景图像整合到一张大图中(精灵图),那我们要做的,就是把小图拼合成一张大图。
大部分情况下,精灵图都是网页美工做。
我们精灵图上放的都是小的装饰性质的背景图片。 插入图片不能往上放。
我们精灵图的宽度取决于最宽的那个背景。
我们可以横向摆放也可以纵向摆放,但是每个图片之间,间隔至少隔开偶数像素合适。
在我们精灵图的最低端,留一片空隙,方便我们以后添加其他精灵图。
结束语: 小公司,背景图片很少的情况,没有必要使用精灵技术,维护成本太高。 如果是背景图片比较多,可以建议使用精灵技术。