聊聊Iconfont

一、前言

说起Iconfont,对大多数人来说可能不是什么新的技术了,现在好多大网站已经开始使用Iconfont。博主今天主要是简单说一下它的使用方法,聊聊使用它时可能遇到哪些坑,不熟悉的同学可以简要看一下,资深了解的同学,如果发现问题,还请指正。

二、什么是Iconfont

有的同学可能会问什么是Iconfont ?

其实,Iconfont 就是指用字体文件取代图片文件,来展示图标、特殊字体等元素的一种方法。

那么哪些网站在用它呢?有什么优缺点?以及如何使用它,接下来我们一一解答这几个问题。

首先让我们来看看都哪些网站使用了Iconfont 。

淘宝用到的地方

  

新浪微博用到的地方

还有像豆瓣,一淘,想玩等网站也都用到了它,我就不一一粘结图出来了,有兴趣的同学可以去瞧一瞧。

看完别人用到的地方,大家是不是也开始跃跃欲试了呢?

不过在具体说使用它之前,还需了解一下Iconfont 有什么优缺点,到底适不适合我们在项目中使用。

先来看看优点:

  1. 加载文件体积小。
  2. 可以直接通过css的font-size,color修改它的大小和颜色,对于需要缩放多个尺寸的图标,是个很好的解决方案。
  3. 支持一些css3对文字的效果,例如:阴影、旋转、透明度。
  4. 兼容低版本浏览器。

不过它也有局限性,不能作为css sprite的替代品,我们来看看缺点:

  1. 矢量图只能是纯色的。
  2. 制作门槛高,耗时长,维护成本也很高。

看到这些优缺点之后,我们可以决定它是否可以直接在我们的项目中使用 , 不论我们的项目是否可以使用它,都不妨碍我们去了解它, 接下来我们来看一下如何使用它。

三、使用Iconfont

首先,在我们写代码之前我们需要得到图标字体文件。现在有两种办法提供大家参考。

  1. 让设计师设计矢量图片然后通过工具直接转换成相应的字体。
  2. 使用第三方Iconfont 在线服务(例如: 阿里巴巴Iconfont平台 ),然后直接上传你自己设计的图标矢量图生成字体文件。

得到了字体文件之后我们就可以说一下如何使用它了。我们在CSS中像设置自定义字体一样使用就可以。

font-face 字体声明:   

1 @font-face {font-family: "iconfont";
2   src: url(‘iconfont.eot‘); /* IE9*/
3   src: url(‘iconfont.eot?#iefix‘) format(‘embedded-opentype‘), /* IE6-IE8 */
4   url(‘iconfont.woff‘) format(‘woff‘), /* chrome, firefox */
5   url(‘iconfont.ttf‘) format(‘truetype‘), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
6   url(‘iconfont.svg#iconfont‘) format(‘svg‘); /* iOS 4.1- */
7 }

我们看到,不同的浏览器调用不同的字体文件。

定义一下Iconfont 的样式:

1 .iconfont {
2   font-family:"iconfont" !important;
3   font-size:16px;
4 }

我们可以通过字体的大小font-size和自体颜色color改变图标的大小和颜色。示例图如下:

   

挑选图标对应的字体编码,应用于页面中:

<i class="icon iconfont"></i>

接下面我们再来说说Iconfont在使用过程中可能遇到的各种坑。

  1. 字体图标在一些浏览器下会遇到被加粗的问题,设置-webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;解决。
  2. 跨域访问不到字体,由于怕字体版权得不到保护,默认跨域的字体文件是访问不到的,一般通过服务器设置 Access-Control-Allow-Origin指定自己需要的网站和设置同域来解决这个问题。
  3. 不要包含没有使用的@font-face,IE将部分他是否使用,统统加载下来。万恶的IE。
  4. @font-face声明之前,如果有script标签的话,直到字体文件完成下载之前,IE将都不会渲染任何东西。

有兴趣的同学可以去坑里面走一圈,自己试试坑的深浅。博主就介绍在这里,如果有错误还望大家指出,共同学习。

本博客文章皆为原创,未尽许可,请勿转载 (http://www.cnblogs.com/song-song/p/5212706.html


时间: 2024-10-10 20:38:52

聊聊Iconfont的相关文章

聊聊基于Lucene的搜索引擎核心技术实践

最近公司用到了ES搜索引擎,由于ES是基于Lucene的企业搜索引擎,无意间在"聊聊架构"微信公众号里发现了这篇文章,分享给大家. 请点击链接:聊聊基于Lucene的搜索引擎核心技术实践

iconfont图标大全

1)不懂Iconfont-阿里巴巴矢量图标库(http://www.iconfont.cn/)请自觉百度,或者访问官网学习. 2)最近花了近5天的时间,收藏了近1000个iconfont的图标,并经过编辑.分类.排序等步骤,终于初步达到了想要的效果. 3)啥也不说了,直接上截图. 4)效果展示: 图1 图2 图3 图4 图5 图6 图7 图8 图9 图10 图11 图12 图13 图14 图15 图16 图17 图18 图19 图20 图21 5)资源文件截图 6)谁有意向拥有这些资源,可以扫描

聊聊分布式事务

聊聊分布式事务 2017-04-15 数据库开发 (点击上方公众号,可快速关注) 作者:员海滨 nickid.cn/2017/04/分布式事务/ 如有好文章投稿,请点击 → 这里了解详情 分布式事务场景如何设计系统架构及解决数据一致性问题,个人理解最终方案把握以下原则就可以了,那就是:大事务=小事务(原子事务)+异步(消息通知),解决分布式事务的最好办法其实就是不考虑分布式事务,将一个大的业务进行拆分,整个大的业务流程,转化成若干个小的业务流程,然后通过设计补偿流程从而考虑最终一致性. 什么是事

Android程序中使用iconfont心得

1.关于iconfont iconfont既是icon又是font,具体来说应该是用font形式展现的icon.与传统图片格式的图标不同,这一种图标因为是以字体形式展现的,所以更改大小.颜色.背景颜色都非常方便. 2.使用方式 2.1 下载资源 资源来源:http://www.androidicons.com/ 根据引导找到下载链接.下载解压后找到iconfont/font,把里面的四个文件拷到Android项目中的assets目录下.找到glyphs/glyphs.html,因为之后会用到,所

从DT时代云栖大会聊聊恒生电子

从IT到DT,除了HOMS和配资,本文结合互联网金融的背景,帮助读者对恒生电子600570了解更多. 马云在2015杭州·云栖大会Computing Conference发表致辞时多次强调DT(Data Technology)时代.他说DT最了不起的是利他精神,数据将成为最核心的资源,凭借阿里云扶持大众创业,寄望创意的商业化热潮重新激发经济引擎的活力,从产业升级和改革的思想上都与国家领导层的想法高度契合,难怪这次大会有史以来规格最高,政府主管部门官员也深度参与其中. 结合本届云栖大会的主题:"互

聊聊程序员的软技能

聊聊程序员的软技能 最近读到一本有意思的书,叫<软技能-代码之外的生存指南>,这是一本相当跨界的书,内容除了介绍了技术人的职业发展之外,还涉及了自我的营销.学习方法.生产力.健身.甚至还包括理财.应该说,每一个章节都是非常有意思的,值得每一个程序员学习的内容. <软技能>一书的内容分为以上这些章节,我也按这些章节讲讲自己的感悟吧. 职业 职业一章介绍了程序员的面试,晋升,离职,远程办公,自由职业,以及创业.不管做什么事情,专业性总是第一要点.就像书中写的那样,我们应该成为「专业人士

聊聊默认支持的各种配置源[内存变量,环境变量和命令行参数]

聊聊默认支持的各种配置源[内存变量,环境变量和命令行参数] 较之传统通过App.config和Web.config这两个XML文件承载的配置系统,.NET Core采用的这个全新的配置模型的最大一个优势就是针对多种不同配置源的支持.我们可以将内存变量.命令行参数.环境变量和物理文件作为原始配置数据的来源,如果采用物理文件作为配置源,我们可以选择不同的格式(比如XML.JSON和INI等) .如果这些默认支持的配置源形式还不能满足你的需求,我们还可以通过注册自定义ConfigurationSour

【转载】聊聊高并发系统之降级特技

原文:聊聊高并发系统之降级特技 在开发高并发系统时有三把利器用来保护系统:缓存.降级和限流.之前已经有一些文章介绍过缓存和限流了.本文将详细聊聊降级.当访问量剧增.服务出现问题(如响应时间慢或不响应)或非核心服务影响到核心流程的性能时,仍然需要保证服务还是可用的,即使是有损服务.系统可以根据一些关键数据进行自动降级,也可以配置开关实现人工降级.本文将介绍一些笔者在实际工作中遇到的或见到过的一些降级方案供大家参考. 降级的最终目的是保证核心服务可用,即使是有损的.而且有些服务是无法降级的(如加入购

iOS: 聊聊 Designated Initializer(指定初始化函数)

iOS: 聊聊 Designated Initializer(指定初始化函数) 一.iOS的对象创建和初始化 iOS 中对象创建是分两步完成: 分配内存 初始化对象的成员变量 我们最熟悉的创建NSObject对象的过程: 苹果官方有一副图片更生动的描述了这个过程: 对象的初始化是一个很重要的过程,通常在初始化的时候我们会支持成员变量的初始状态,创建关联的对象等.例如对于如下对象: 1 @interface ViewController : UIViewController 2 3 @end 4