什么是iconfont?正如字面意思,就是图标字体,下面我给大家慢慢道来
web页面包含什么元素?
在所有包含ui的程序架构中,以上不同的ui元素在各种环境中都会遭遇到不同的问题,同时也都有与之对应的解决方案
iconfont 就是一个解决【图标】问题的解决方案之一
首先来看一下图标会有什么难题:
背景图和插图一般不会有这些问题,他们偏向于主体内容而不是点缀,一般不会改变。背景图一般是平铺,插图一般也是定宽,所以大小也不怎么需要改变。
图标的解决方案有:
iconfont是图标的另一种解决方案,它是把一些简单的图标制作成字体,然后让图标变成和字体一样使用
iconfont有以下优点:
虽然使用iconfont没有图片那么简单,但也没有想象中那么难,下面来看看怎么使用iconfont
首先,你需要制作iconfont,现在有许多iconfont的站点,比如fontello
我们随便选择一个图标:
然后我们可以自定义字码:
最后我们就可以下载字体文件了:
下载完,解压出来,我们可以看到有demo,有字体文件,也有使用代码:
可以看到使用代码里面已经把各种兼容性考虑到了:
使用代码也给到,注意使用类名也是可以在站点中自定义的:
另外注意的是,字体文件也是可以内链的,在fontello-embedded.css文件里面:
基本上,利用提供的代码,基本我们就可以完全兼容的使用iconfont,下面介绍移动端使用iconfont,在移动端只需要如下代码:
在移动端,只需要truetype类型
效果如下:
使用iconfont,我们可以应用许多字体样式,现在我们改变一下样式:
效果如下:
可以发现,改变一个图标的颜色,背景色,大小都是非常方便的一件事
另一方面,当需要改一个图标的时候,我们可以在制作iconfont的时候,替换掉一个图标即可,使用的类名和字码都是可以定制的,这样就可以在不用修改业务使用代码的情况下,只需要替换掉内链的字体代码就可以完成替换图标的工作
以上代码经过实机测试,兼容IOS4,Android2.3
在移动端,iconfont也可以使用外链形式,这里就不再赘述
在解决图标的问题上,不管是兼容性,灵活性,扩展性,iconfont都是一个很好的解决方案
- 在使用上字体文件和普通的静态资源一样,既可以外链也可以内链,并且字体文件也可以使用gzip压缩
- 在移动端上,可以只使用truetype类型,非常灵活小巧
- 现在很多项目已经在使用iconfont,先不说国外,比如国内,阿里巴巴各个平台(不仅pc,h5,还有app)已经全面使用iconfont,并且阿里巴巴还搭建了一个线上iconfont站点,这是一个很完善的站点,上面有阿里几个主要业务的图标资源库,也可以让用户自己制作图标,完善用户自身的图标库,让用户之间可以共享形成生态,同时站点的使用说明也非常完整,从图标设计,iconfont制作和iconfont使用(里面包含了各个平台的使用方法)都有很完善的说明
总的来说,iconfont是可以应用的,特别是在移动端,如果不兼容Android2.3,使用svg图片也是可以接受的,实际上制作iconfont也是需要svg资源的,所以两者其实很类似
另外,阿里巴巴主要业务都已经广泛应用iconfont,并且还有成熟的线上站点支持,最起码在可行性方面是可以不用过多考虑的,虽然在使用iconfont的过程中可能会遇到许多问题,但是鉴于iconfont应用广泛的前提下,线上的资源也会非常丰富,应该不需要过多的担心
最后想说,我们业务是可以考虑使用的!如果要应用iconfont,我们还需要设计们的支持!