为什么我们放弃css sprite使用iconfont字体图标

说在开头

前面有一篇博客说道,项目中使用压缩和css sprite技术对图标进行分类和组合;

但随着项目的不断完善,我们也遇到了很多问题:

  1.如何对图标进行分类;刚开始还比较好,我们对图标进行分类,大概有银行卡图标一类,增删改图标一类,支付类 型一类,等等。但随着,图标的不断增加和业务直接的交叉,发现分类变得很困难,渐渐失去耐心。如果,把所有图标集成到一张图;但是有这样一种情况:有些页面只使用了一个图标,同时用户只在这个页面进行操作;却要下载一整张大图,浪费资源。

2.图标位置不好控制,很多时候为了background-position:定位准确,特别保证鼠标hover效果的图片区域和默认图片的区域完全重合;我们常常会1px的尝试,调整。眼睛都看花了。

诸如下图:

3.不利于维护 新增图标不得不修改真个图,有时候为了保证某一类型的在一块区域,不得不调整其他图标的位置。

4.放大缩小,图片失真。

所以,我们决定放弃css sprite



重点,重点

为什么选择iconfont

1.兼容性良好。现在主流浏览器(包括IE6)都支持CSS3的自定义字体(@font-face),因此可以尝试使用font来替换图片展示网站的各种icon。

2.使用方便;开发人员直接调用样式,不用为了background-position:准确定位看瞎眼睛。

3.利于维护,新增,修改,删除图标方便,各个图标之间相对独立。

4.体积很小,请求速度快,可以带来比较好的用户体验。

5.矢量图,放大,拉伸不会失真。

有些人,可能会觉得字体图标过于单调,在动画,过渡,阴影方面显得吃力;但是,在我看来这些效果并不能对用户体验造成很大影响;相反,字体的体积小,页面加载快;hover,mouse事件时,切换效果很顺畅;反而能提高用户体验。

下面分享一下目前项目中使用的iconfont实例;

生成图标的过程我就略过了这个需要跟UI协同合作,建议使用FontCreator,推荐一篇博客 http://www.uisdc.com/learning-icon-font

效果图如下:(文章附件,会附上我们项目目前的字体图片库)

首选利用font-face获取字体文件

@font-face {font-family: "iconfont";
  src=\‘#\‘" /* IE9*/
  src=\‘#\‘" /* IE6-IE8 */
  url(‘iconfont.woff‘) format(‘woff‘), /* chrome、firefox */
  url(‘iconfont.ttf‘) format(‘truetype‘), /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/
  url(‘iconfont.svg#iconfont‘) format(‘svg‘); /* iOS 4.1- */
}

从网上,找了一下目前主流浏览器对于icon font的支持情况,如下:

  • IE:从IE4开始支持eot格式,IE9开始支持woff。
  • webkit/safari:支持TrueType/OpenType(.ttf),OpenType PS(.otf),iOS4.2+支持.ttf,iOS 4.2以下只支持SVG字体; Safari5.1+ 开始支持woff格式
  • Chrome:除webkit支持的以外,从Chrome 6开始,开始支持woff格式;
  • Firefox:支持.ttf和.otf,从Firefox 3.6开始支持woff格式;
  • Opera:支持.ttf、.otf、.svg。 Opera 11开始支持woff;
  • iPad, iPhone and Android 3.0+ 支持SVG fonts。

所以,我们生成了:eot,.woff,avg等格式的字体文件

使用方式大概有两种:

1.直接下字体图标对应的编码

 <i class="icon iconfont"></i>
                    <div class="name">下载</div>
                    <div class="code">&amp;#xe670;</div>
                    <div class="fontclass">.xiazai</div>
                </li>

我们不建议,这样做,因为这个我们需要记住编码;而且看代码时候,不能知道这个图标的含义

2.通过伪类:(建议用这个,不用记忆,看代码时,也能知道图标意思)

<i class="icon iconfont icon-xiazai"></i>
                    <div class="name">下载</div>
                    <div class="code">&amp;#xe670;</div>
                    <div class="fontclass">.xiazai</div>
                </li>

对应的样式如下:

.icon-xiazai:before { content: "\e670"; }
.icon-yixuan:before { content: "\e671"; }

这样我们就可以把这些图标当文字控制

比如:color,font-size属性就可以使用了。



说在最后

想写这篇文章很久了,终于加班完成了。

注意:附件为,我们的字体图标库。

时间: 2024-12-26 07:51:13

为什么我们放弃css sprite使用iconfont字体图标的相关文章

CSS3属性+iconfont字体图标的使用方法

CSS3属性文本阴影:text-shadow:水平阴影 垂直阴影 模糊度 颜色: 可以多组值共同存在,用逗号隔开多层文本阴影的设置:text-shadow:第一层,第二层,第三层: 文本换行: 在单词内部换行: word-wrap:: normal:默认值,不允许在单词内部换行. break-word:允许单词内部换行. word-break:: break-all 允许在单词内部换行 keep-all 允许在换行点换行,单词内部不换行盒子阴影: box-shadow:水平阴影 垂直阴影 模糊度

如何使用iconfont字体图标代替网页图片?

一.IconFont的优点 1.轻量性 可以减少http请求,可以配合html5离线存储做性能优化,有利于后期维护. 2.灵活性 可以自由变换IconFont大小(不失真),可以修改IconFont颜色,可以添加阴影,旋转,透明度等视觉效果. 3.兼容性 图标字体IconFont支持所有现代浏览器,包括IE低版本. 二.IconFont的缺点 1.图标字体只能被渲染成单色或者css3的渐变色: 2.设计自已的IconFont需要花费大量时间,也会增加前端重构的成本: 3.Firefox和IE9不

iconfont字体图标的使用

一.准备工作 1.首先,进入阿里的矢量图标库,在这个图标库里面可以找到很多图片资源,当然了需要登录才能下载或者使用,用GitHub账号或者新浪微博账号登录都可以 2.登录以后,可以搜索自己需要的资源,然后直接下载使用,或者建立图标库然后再使用,例如这里以删除的图标为例 a) 搜索删除图标 b) 选择需要的图标,然后可以执行三种操作:添加入库.收藏或者直接下载,可以根据自己的实际情况来选择相应操作,这里选择添加入库,操作完可以看到图标已经添加进右上角的购物车里了 c) 点击右上角的购物车,可以看到

iconfont字体图标的使用方法--超简单!

我之前因为项目用bootstrap比较多,所以使用font awesome字体图标比较多,后来接触到了iconfont,发现想要的什么图标都有,还可以自定义图标,非常强大!之前看了一波教程,觉得繁琐,自己弄明白后感觉如此简单,做了这么个简单教程,直接上图,简单粗暴,避免新手走弯路,这里讲解的默认是元素使用类名; step 1:百度iconfont,找到阿里巴巴矢量图标库官网,然后注册登录,或者用github登录也行,此步骤跳过; step 2:找到图标管理->我的项目->然后新建项目: 右边点

小程序入坑(一)---如何引入iconfont 字体图标

最近一直忙于日常任务,其实是懒癌又犯了..........不过因为自己的"懒癌","不思进取"给自己挖了不少坑. 一,小程序工具的安装 打开简易小程序的官网https://mp.weixin.qq.com/debug/wxadoc/dev/,,点击 导航栏里的"工具"->点击"微信开发者工具",如图: 进入下载开发工具页面,然后根据自己的电脑配置选择相应的压缩包. 二.创建一个自己的项目 1.安装好"微信开发工

iconfont字体图标的使用方法

我之前因为项目用bootstrap比较多,所以使用font awesome字体图标比较多,后来接触到了iconfont,发现想要的什么图标都有,还可以自定义图标,非常强大!之前看了一波教程,觉得繁琐,自己弄明白后感觉如此简单,做了这么个简单教程,直接上图,简单粗暴,避免新手走弯路,这里讲解的默认是元素使用类名; step 1:百度iconfont,找到阿里巴巴矢量图标库官网,然后注册登录,或者用github登录也行,此步骤跳过; step 2:找到图标管理->我的项目->然后新建项目: 右边点

iconfont字体图标使用方法

我之前因为项目用bootstrap比较多,所以使用font awesome字体图标比较多,后来接触到了iconfont,发现想要的什么图标都有,还可以自定义图标,非常强大!之前看了一波教程,觉得繁琐,自己弄明白后感觉如此简单,做了这么个简单教程,直接上图,简单粗暴,避免新手走弯路,这里讲解的默认是元素使用类名; step 1:百度iconfont,找到阿里巴巴矢量图标库官网,然后注册登录,或者用github登录也行,此步骤跳过; step 2:找到图标管理->我的项目->然后新建项目: 右边点

uni-app引入iconfont字体图标

求你们了 ,别在乱写博客了 ,明明一分钟的事情 ,非让我折腾两小时 1 首先进入你的iconfont项目 很好, 看见圈圈的吗 , 我说蓝色的,记住了,选到这个 ,然后点击下载本地项目, 解压完就是这个了 ,然后把 圈起来的放到你的项目文件里面 ,记得引入的时候路径别错了,随便放,引入路径对了就行 2 https://www.giftofspeed.com/base64-encoder/ 进入这个网站, 然后把刚刚解压的文件打开 找到 找不到?打死你 重新去官网下载, 然后把这个文件移入到桌面后

在线使用iconfont字体图标

登录https://www.iconfont.cn 把需要的图标加入购物车,然后加入项目 打开我的项目,生成代码 有3中方式使用图标 unicode和font class本质都是使用字体,好处在于兼容性好,可以像使用字体一样定义大小.颜色(单色),加粗,阴影等,不足在于不能使用多色图标(引用的多色图标也会变单色) symbol:svg格式(xml描述的图片)图标,可以使用多色图标,兼容性现代浏览器 unicode方式 复制unicode的代码到模板代码的样式中,注意//前面加http: <!DO