关于iconfont
1. 从FONT-FACE说起
要想了解iconfont,得从一个新的css3规则说起。css3中,新增了一种样式规则,@font-face,这个规则可以用来引入自定义的字体,到客户端。以前,我们的字体只能听任客户端的。因为用户没有安装的话,我们强制要求显示也没有办法。
现在使用@font-face则可以引入在web服务器上存放的字体文件,从而达到,可以使用一些客户端浏览器上不存在的字体,等到浏览器去访问并渲染时,去下载font-face指定的字体。并命名为我们想要的字体。
如图1.1:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8" />
<style>
@font-face {
font-family: myfont;
src: url('./myfont.otf');
}
.usefont {
font-family: myfont;
}
</style>
</head>
<body>
<h1 class="usefont">
测试1
</h1>
<h1>
测试2
</h1>
</body>
</html>

图1.1
上面的自已个h1中使用的,正是我们存在服务端的字体。由于各个浏览器的兼容性问题,
- IE浏览器:EOT
- Mozilla浏览器:OTF,TTF
- Safari浏览器:OTF,TTF,SVG
- 歌剧:OTF,TTF,SVG
- Chrome浏览器:TTF,SVG
所以,我们需要准备多个格式的不同的字体文件。指代同一份字体。
@font-face {
font-family: 'icons';
src: url(../font/curiconfont.eot#iefix) format('embedded-opentype'),
url(../font/curiconfont.woff) format('woff'),
url(../font/curiconfont.ttf) format('truetype'),
url(../font/curiconfont.svg?#iconfont) format('svg');
font-weight: normal;
font-style: normal;
}
后面的format指代的是墙面的资源是那种格式的。如想更详细了解,可以百度一下font-face。上面提到的例子可以在github上的hellofontface.html中找到。
2 什么是iconfont
既然font-face可以指定字体文件,那么字体长成什么样,不就是开发者说的算了么。我们可以描述一个字体,它长成这样:
。其实,话说回来,文字不就是图像么。人类最早发明文字的时候就是按照图像来发明的。所以,我们可以把一些字符,描述成图像。在我们的网页上,当成图像来使用。这就是iconfont了。把一些零散的icon做成字体。我们调用文字的时候,渲染出来的就是icon图像了。
3 iconfont怎么用
我们来拿手机百度首页的字体做个小例子试试(如图2.1),我们新加入一个font-face,起名为myFont,在需要使用这份iconfont的部分,font-family设置为myFont,则这部分区域可以使用上该font文件:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8" />
<style>
@font-face {
font-family: myfont;
src: url('http://m.baidu.com/static/index/iconfont/iconfont_c0634602.woff');
}
.usefont {
font-family: myfont;
}
</style>
</head>
<body>
<h1 class="usefont">
</h1>
<h1>
</h1>
</body>
</html>

图2.1
我们看到我们在网页上写了一个字符,本来这个字符对应的文字应该是什么都没有:
但是,我们的iconfont中赋予了这个字符的图像:
,于是,我们将这个字符所在的区域的字体,设置为我们的iconfont文件。于是浏览器就渲染出了这个字符在我们的font文件中,对应的图像。
这里要注意一下---- ,是一个字符的html编码。这个字符在浏览器中没有定义,但是在iconfont中有定义。我们可以使用unicode码来唯一标识一个字符,将这个字符在我们的文件中画出来。这样就可以利用上iconfont了。
4 iconfont怎么做?
既然知道了怎么用,就要开始了解一下,如何制作一个iconfont了。国内有阿里巴巴的iconfont平台,可以选自己喜欢的图标导出iconfont。
如果我们手里有一些图标,想转换为iconfont的话,可以直接使在线工具转换:
http://image.online-convert.com/convert-to-svg
设计师们也可以使用illustrator直接将图片导出为svg,具体导出方式可以参考如下链接:
http://www.w3cplus.com/svg/svg-files-from-illustrator-to-the-web.html
导出单个icon的svg后,可以上传至阿里巴巴的iconfont平台,与其他图标拼合成一张字体文件。
5 iconfont的利与弊
看到这里,一些同学肯定会问,那我们为什么要用iconfont呢?直接用图片不就好了。
这里我们分析一下使用iconfont的利与弊
5.1 iconfont的利
5.1.1 iconfont图像放大后,不会失真。
相信读者们没有见过文字在网页上放大的时候会失真的状况吧,因为字体是矢量的,字体的描绘只记录绘制的路径。而图片不是,我们如果把一张小图放大若干倍之后,会发现图像变得模糊了。因为图像是基于像素点的描述,放大后,之前图像的一个像素,被放大为多个像素。自然是会失真的
5.1.2 iconfont节省流量
在图片清晰度要求越高的情况下,我们的图片本身就会越大。这样非常耗费资源,而且,图像需要的色彩值信息,也会存储。这样也极大的浪费了空间。iconfont颜色由css决定,尺寸要求变大的话,则适应性的变大。传输的大小不会变大。
5.1.3 iconfont在颜色变幻方面很简单
试想,如果一个图标一开始是黑色的hover上去的时候变为蓝色的话,如果这个icon是用图片来实现的话,我们需要在hover的时候,更换背景图片,如果使用iconfont的话,则可以直接替换icon的color就行。
5.2 iconfont的弊
5.2.1 iconfont不能支持一个图像里面混入多重颜色
作为文字,是不会出现左边是红色右边是绿色的状况的。一个文字,是一个整体,统一的颜色。这个颜色就取决于css的color了。所以使用iconfont做图标的话,最好使用纯色的图标。
5.2.2 iconfont的使用没有使用图片那么直接,简单。
如果单论直接使用的话,图片还是比较便捷的。
关于iconfont的更多相关文章
- iconfont使用,亲测
iconfont对于前端应用来说有很多便捷: 1.自由变化大小 2.自由修改颜色 3.可以添加一些视觉效果如:阴影.旋转.透明度. 4.兼容IE6 在线引用和下载到本地两种方法 一.在线引用 图标的制 ...
- 如何使用IconFont字体图标代替网页图片?
一.IconFont的优点 1.轻量性 可以减少http请求,可以配合html5离线存储做性能优化,有利于后期维护. 2.灵活性 可以自由变换IconFont大小(不失真),可以修改IconFont颜 ...
- 安卓图标IconFont使用
一.补充知识:PNG.IconFont.SVG理论 PNG为位图,是由不同的排列和染色的像素点组成的图像,位图的扩大实质是增加单个像素点的大小,故而导致在不同分辨率表现非常糟糕. SVG为可缩放矢量图 ...
- iconfont的蜕化操作
很多国外的网站,访问的时候可以看到,页面先是大面积白一下,然后恢复正常.原因是网页上用到了 webfont,这些页面很多情况都是直接引用 google 的 webfont 地址,中华大局域网下,由于网 ...
- WPF自定义控件与样式(1)-矢量字体图标(iconfont)
一.图标字体 图标字体在网页开发上运用非常广泛,具体可以网络搜索了解,网页上的运用有很多例子,如Bootstrap.但在C/S程序中使用还不多,字体图标其实就是把矢量图形打包到字体文件里,就像使用一般 ...
- 图标字体(IconFont)制作
图标字体(IconFont)介绍 图标字体(IconFont)现在越来越被广泛使用,大大提高了网页的多样化,解决了视网膜屏幕失真的问题. 据说微软从IE4开始支持的这个私有方法(@font-face) ...
- 如何使用iconfont字体代替小图片?
我们以阿里巴巴矢量图标库举例,地址:http://www.iconfont.cn/ 在这里,你可以上传你的矢量图标,也可以直接使用现成的小图标. 为什么要用这些个图标字体,本文就不介绍了,请自行百度. ...
- iOS中iconfont(图标字体)的基本使用
前言 近日在做项目时,项目组有提出iconfont的技术,便开始查询相关资料.iconfont技术的主要目的是为减少应用体积而生.首先icon代表图标 font代表字体.此技术便是将图标转化为字体,从 ...
- icon-font与svg
icon font 使用与svg应用分享 icon font 字体概述 css3增加了@font-face属性,传统的浏览器是通过font-family来设置字体,如果系统里没有的话就用其它字体来代替 ...
- fontcreator制作iconfont(包含两个教程)
第一步 在AI中画好矢量图,或者是在PS中将纯色的图片存成PNG格式,最好是放大很多倍的纯色图片.因为导入到fontcreator中会显得很小,如果不是矢量,图片拉大后就会有锯齿状. 第二步 选中AI ...
随机推荐
- Android应用程序消息处理机制(Looper、Handler)分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6817933 Android应用程序是通过消息来 ...
- 《JavaScript 闯关记》之事件
JavaScript 程序采用了异步事件驱动编程模型.在这种程序设计风格下,当文档.浏览器.元素或与之相关的对象发生某些有趣的事情时,Web 浏览器就会产生事件(event).例如,当 Web 浏览器 ...
- 使用bootstrapvalidator的remote验证经验
这里需要说一下,bootstrapvalidator的帮助文档写的比较简单,对于remote验证器的说明更是如此,在经历多方测试之后才明白如何使用这个验证器. 一个典型的ajax验证代码如下: 服务端 ...
- 【SQL语句】 - Ctrl+3 查询表属性的存储过程 [sp_select_talberowName]
/**-- ============================================= Author: xftCteateDate: 2013-10-11Description:查看表 ...
- PHP学习笔记二十三【This】
<?php Class Person { function test1() { $this->test2();//类里面的方法互相调用要加$this } protected functio ...
- ios 面试题 0
1.__block和__weak修饰符的区别: 1.__block不管是ARC还是MRC模式下都可以使用,可以修饰对象,还可以修饰基本数据类型. 2.__weak只能在ARC模式下使用,也只能修饰 ...
- 二维计算几何基础题目泛做(SYX第一轮)
题目1: POJ 2318 TOYS 题目大意: 给一个有n个挡板的盒子,从左到右空格编号为0...n.有好多玩具,问每个玩具在哪个空格里面. 算法讨论: 直接叉积判断就可以.注意在盒子的边界上面也算 ...
- [转]PictureEx.h和PictureEx.cpp源文件
要显示一个gif,网上找了个,子类化了MFCl图片控件,用着方便,记一下 转自:http://www.bccn.net/Article/net/vcnet/jszl/200709/6386.html ...
- 添加jar
file->project structure->'+'添加jar 在.gradle中配置
- debian安装缺少网卡驱动rtl_nic/rtl8168e-2.fw和bcm43xx-0.fw
最近拿了公司一台旧笔记本来装debian玩,刻好盘之后安装,发现网卡驱动都无法装上. 这是因为这些网卡驱动不是开源的,顽固的debian便将他们从驱动列表中移除了... 我从debian官方找到了这两 ...