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

我们看到我们在网页上写了一个字符&#xe609,本来这个字符对应的文字应该是什么都没有:

但是,我们的iconfont中赋予了这个字符的图像:,于是,我们将这个字符所在的区域的字体,设置为我们的iconfont文件。于是浏览器就渲染出了这个字符在我们的font文件中,对应的图像。

这里要注意一下----&#xe609 ,是一个字符的html编码。这个字符在浏览器中没有定义,但是在iconfont中有定义。我们可以使用unicode码来唯一标识一个字符,将这个字符在我们的文件中画出来。这样就可以利用上iconfont了。

4 iconfont怎么做?


既然知道了怎么用,就要开始了解一下,如何制作一个iconfont了。国内有阿里巴巴的iconfont平台,可以选自己喜欢的图标导出iconfont。

http://www.iconfont.cn/

如果我们手里有一些图标,想转换为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的更多相关文章

  1. iconfont使用,亲测

    iconfont对于前端应用来说有很多便捷: 1.自由变化大小 2.自由修改颜色 3.可以添加一些视觉效果如:阴影.旋转.透明度. 4.兼容IE6 在线引用和下载到本地两种方法 一.在线引用 图标的制 ...

  2. 如何使用IconFont字体图标代替网页图片?

    一.IconFont的优点 1.轻量性 可以减少http请求,可以配合html5离线存储做性能优化,有利于后期维护. 2.灵活性 可以自由变换IconFont大小(不失真),可以修改IconFont颜 ...

  3. 安卓图标IconFont使用

    一.补充知识:PNG.IconFont.SVG理论 PNG为位图,是由不同的排列和染色的像素点组成的图像,位图的扩大实质是增加单个像素点的大小,故而导致在不同分辨率表现非常糟糕. SVG为可缩放矢量图 ...

  4. iconfont的蜕化操作

    很多国外的网站,访问的时候可以看到,页面先是大面积白一下,然后恢复正常.原因是网页上用到了 webfont,这些页面很多情况都是直接引用 google 的 webfont 地址,中华大局域网下,由于网 ...

  5. WPF自定义控件与样式(1)-矢量字体图标(iconfont)

    一.图标字体 图标字体在网页开发上运用非常广泛,具体可以网络搜索了解,网页上的运用有很多例子,如Bootstrap.但在C/S程序中使用还不多,字体图标其实就是把矢量图形打包到字体文件里,就像使用一般 ...

  6. 图标字体(IconFont)制作

    图标字体(IconFont)介绍 图标字体(IconFont)现在越来越被广泛使用,大大提高了网页的多样化,解决了视网膜屏幕失真的问题. 据说微软从IE4开始支持的这个私有方法(@font-face) ...

  7. 如何使用iconfont字体代替小图片?

    我们以阿里巴巴矢量图标库举例,地址:http://www.iconfont.cn/ 在这里,你可以上传你的矢量图标,也可以直接使用现成的小图标. 为什么要用这些个图标字体,本文就不介绍了,请自行百度. ...

  8. iOS中iconfont(图标字体)的基本使用

    前言 近日在做项目时,项目组有提出iconfont的技术,便开始查询相关资料.iconfont技术的主要目的是为减少应用体积而生.首先icon代表图标 font代表字体.此技术便是将图标转化为字体,从 ...

  9. icon-font与svg

    icon font 使用与svg应用分享 icon font 字体概述 css3增加了@font-face属性,传统的浏览器是通过font-family来设置字体,如果系统里没有的话就用其它字体来代替 ...

  10. fontcreator制作iconfont(包含两个教程)

    第一步 在AI中画好矢量图,或者是在PS中将纯色的图片存成PNG格式,最好是放大很多倍的纯色图片.因为导入到fontcreator中会显得很小,如果不是矢量,图片拉大后就会有锯齿状. 第二步 选中AI ...

随机推荐

  1. hbase单机安装

    1.网上内容比较混乱,其实安装单机hbase只需要安装hbase即可 2.把hbase-0.xxx.tart.gz 拷贝到/opt/hbase文件及下(这是安装目录,可自定义) 2.1 tar xfz ...

  2. XCode Could not launch &quot;&quot; failed to get the task for process

    在Xcode下编译project正常,在模拟器下执行正常,最后在真机上执行的时候出现了例如以下错误: Could not launch "FeedMeWorms" failed t ...

  3. 飘逸的python - hack输出流便于调试

    当项目有很多文件时,要找出控制台的输出是在哪里print出来的很麻烦,不过这事对于强大的python来说小菜一碟. 先上代码和效果,再说明. import sys,traceback class my ...

  4. 微信小程序demo豆瓣图书

    最近微信小程序被炒得很火热,本人也抱着试一试的态度下载了微信web开发者工具,开发工具比较简洁,功能相对比较少,个性化设置也没有.了解完开发工具之后,顺便看了一下小程序的官方开发文档,大概了解了小程序 ...

  5. Unity 图片的灰度处理

    我们平时在做项目时,经常遇到按钮的点击而且还要区分悬浮,点击,禁用的状态,美术要针对一张图片做多个状态图片,资源图片的数量也就增大了,那么打出的包的大小也就跟着上去了,所以我们可以针对原始图片进行Sh ...

  6. 自定义TypeConverter把基础类型转换为复杂类型

    原文(http://tech.it168.com/d/2008-06-30/200806300953554_all.shtml) TypeConverter对于编写ASP.NET Server Con ...

  7. magic Ajax使用以及注意事项

    以下是引用片段:一.概述    现在Ajax技术正如火如荼的在Internet上发展着.而面对我们之前开发的ASP.NET1.1的Web项目,类似于下拉框等联动也需要啪啪啪的不断刷新,的确影响到了用户 ...

  8. 数组,集合 转成DataTable 方法

    public static DataTable ToDataTable(IList p_List) { DataTable _DataTable = new DataTable(); if (p_Li ...

  9. PHP学习笔记三十三【自定义错误处理器】

    <?php //自定义错误处理器 //$errorno 错误号 //$errmes错误信息 //这两个参数是必须的 function my_error($errorno,$errmes) { e ...

  10. WebBrowser如何获取提交的数据

    WebBrowser 其实是对 ActiveX 控件 SHDocVw 的封装,而这个SHDocVw的很多底层调用WebBrowser控件并没有提供实现,你这个应用需要直接操作 SHDoceVw 控件才 ...