学习目标
本期主要学习字体,内容较少。下一期我们将做一个京东的项目,用到的知识将会非常多,非常的有综合性。
1.Web字体
字体格式
不同浏览器所支持的字体格式是不一样的,我们有必要了解一下有关字体格式的知识。
1、TureType(.ttf)格式
.ttf字体是Windows和Mac的最常见的字体,是一种RAW格式,支持这种字体的浏览器有IE9+、Firefox3.5+、Chrome4+、Safari3+、Opera10+、iOS Mobile、Safari4.2+;
2、OpenType(.otf)格式
.otf字体被认为是一种原始的字体格式,其内置在TureType的基础上,支持这种字体的浏览器有Firefox3.5+、Chrome4.0+、Safari3.1+、Opera10.0+、iOS Mobile、Safari4.2+;
3、Web Open Font Format(.woff)格式
woff字体是Web字体中最佳格式,他是一个开放的TrueType/OpenType的压缩版本,同时也支持元数据包的分离,支持这种字体的浏览器有IE9+、Firefox3.5+、Chrome6+、Safari3.6+、Opera11.1+;
4、Embedded Open Type(.eot)格式
.eot字体是IE专用字体,可以从TrueType创建此格式字体,支持这种字体的浏览器有IE4+;
5、SVG(.svg)格式
.svg字体是基于SVG字体渲染的一种格式,支持这种字体的浏览器有Chrome4+、Safari3.1+、Opera10.0+、iOS Mobile Safari3.2+;
了解了上面的知识后,我们就需要为不同的浏览器准备不同格式的字体,通常我们会通过字体生成工具帮我们生成各种格式的字体,因此无需过于在意字体格式间的区别差异。
2. 字体图标
图片是有诸多优点的,但是缺点很明显,比如图片不但增加了总文件的大小,还增加了很多额外的“http请求”,这都会大大降低网页的性能的。更重要的是图片不能很好的进行“缩放”,因为图片放大和缩小会失真。我们后面会学习移动响应式,很多情况下希望我们的图标是可以缩放的。此时,一个非常重要的技术出现了,就是字体图标(iconfont)。
字体图标优点
可以做出跟图片一样可以做的事情,改变透明度、旋转度等等。
但本质其实是文字,可以很随意的改变颜色、产生阴影、透明效果等等。
本身体积更小,但携带的信息并没有消减。
几乎支持所有的浏览器
移动端设备必备良药。。。
字体图标使用流程
总体来说,字体图标按照如下流程:
设计字体图标
假如图标是我们公司单独设计,那就需要第一步了,这个属于UI设计人员的工作,他们在illustrator或SKetch这类矢量图形软件里创建icon图标,比如下图:
之后保存为svg格式,然后给我们前端人员就好了。
其实第一步,我们不需要关心,只需要给我们这些图标就可以了,如果图标是大众的,网上本来就有的,可以直接跳过第一步,进入第三步。
上传生成字体包
当UI设计人员给我们svg文件的时候,我们需要转换成我们页面能使用的字体文件, 而且需要生成的是兼容性的适合各个浏览器的。
推荐网站: http://icomoon.io
icomoon字库
IcoMoon成立于2011年,推出的第一个自定义图标字体生成器,它允许用户选择他们所需要的图标,使它们成一字型。 内容种类繁多,非常全面,唯一的遗憾是国外服务器,打开网速较慢。
推荐网站: http://www.iconfont.cn/
阿里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,我们用这个。
下载兼容字体包
刚才上传完毕,网站会给我们把UI做的svg图片转换为我们的字体格式,然后下载下来就好了
当然,我们不需要自己专门的图标,是想网上找几个图标使用,以上2步可以直接忽略了,直接到刚才的网站上找喜欢的下载使用把。
字体引入到HTML
在http://glyphicons.com/这个网站下载好得到压缩包之后,最后一步,是最重要的一步了,就是字体文件已经有了,我们需要引入到我们页面中。
得到的压缩包是这样的:
解压之后是这样的:
这些文件不能删,其中有两个非常重要:
1.首先把以下4个文件放入到fonts文件夹里面。通俗的做法
一般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;
}
看着很多,但是不要背,需要时复制粘贴就行。但是一定要放到style里。
HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
@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;/*倾斜字体变正常*/
}
</style>
</head>
<body>
<span></span>
</body>
</html>
第二步:给盒子使用字体
span {
font-family: "icomoon";
}
第三步:盒子里面添加结构
span::before {
content: "\e900";
}
或者
<span></span>
这一步我们首先打开demo.html,并选中你想要的字体右边的“小正方形”:
复制粘贴到你的span中:
<body>
<span></span>
</body>
但是你在代码编辑器中是这样的:
虽然看不见,但确实存在。
然后执行效果如图:
记住: 字体图标是字不是图,所以可以改变大小颜色:
效果如图:
上传自己设计的图标到库
在工作中,你的公司会设计一个自己的图标。通常是这样的一个情况:美工设计一个独一无二的图标,并以svg格式发给你,然后你进入icomoom网站,导入json文件,再下载,覆盖之前的json文件就行。
下面是详细步骤:
之后的操作就是下载解压之类的,这里就不再赘述了。
追加新图标到原来库
如果工作中,原来的字体图标不够用了,我们需要添加新的字体图标,但是原来的不能删除,继续使用,此时我们需要这样做
把压缩包里面的selection.json 重新上传,然后,选中自己想要新的图标,从新下载压缩包,替换原来文件即可。
2.总结
本期学习到此结束,下期是一个京东项目的练习。