这篇文章总结的并不是特别全面,本人在微信公共号已经发布了一篇新的文章关于 Iconfont
地址路径为:https://mp.weixin.qq.com/s/jB1g6tn3ZNiRTpl8P9E7yQ
也可以扫码以下二维码关注微信公众号进行查看
现在的字体图标无非分为三种,分别是Unicode, Font class, Symbol。
1.Unicode
Unicode 是字体在网页端最原始的应用方式,特点如下
- 兼容性最好,支持IE6+,以及现代的浏览器
- 可以按字体的方式调整大小,颜色
- 因为是字体,不支持多色
第一步:拷贝项目下面生成的@font-face
@font-face {
/*定义的字体图标名称,可以自己改*/
font-family: 'iconfont';
/* 引入的文件 */
src: url('iconfont.eot');
src: url('iconfont.eot?#iefix') format('embedded-opentype'),
url('iconfont.woff2') format('woff2'),
url('iconfont.woff') format('woff'),
url('iconfont.ttf') format('truetype'),
url('iconfont.svg#iconfont') format('svg');
}
第二步:定义使用iconfont(图标)的样式
.iconfont {
font-family: "iconfont" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
第三步:挑选相应图标以及其字体编码,使用
<span class="iconfont"></span>
2.Font class
font-class 是Unicode使用方式的一种变种,特点如下:
- 兼容性良好,支持IE8+,以及现代浏览器
- 相比Unicode语意明确,书写直观,可以容易分辨这个icon是什么
- 因为使用class来定义图标,所以当要替换图标时,只需要修改class里面的Unicode引用即可
- 本质上还是使用的图标,多色图标不支持
第一步:引入项目生成的fontclass代码
@font-face {font-family: "iconfont";
src: url('iconfont.eot?t=1550116961862'); /* IE9 */
src: url('iconfont.eot?t=1550116961862#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAAKwAAsAAAAABpQAAAJkAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIGVgCCcAqBEIERATYCJAMICwYABCAFhG0HPxvGBcgusG3YkyJV2MBiHbfFKsDxOB4RRPv9Zu/dNweSaoMomkUTmWSVSCVBbJRKaFrC+7+p+x1bF32SmQ5Zxd5uZfy7XjMu7/LT8TwqqWMIXYUyoFFQoaAK26aoQKjfD4CBinL0C8CAy+lPoAdZHVBue9JYk8cGCywNdA+MIiuSyBvGLniBjwk0TVuVOdk9voayzF4ViAcpTCgXIrLM8nWh2nAwiw8V9fSWPoD36Pvxrx1lkkrBbjq/33Fg/bvmFBWvpe4CQpSAjldQYBPIxHVj5lROMC6nmcmbB8eqD75rZRm4xVEdgv11dm0bTELlM6k89aPWJpCT6VVga9KlpDGmeGuBv/aW1HHiovO8Mc6qbvhqjtPZ0ixJBs0NwnnTi+k4Ff3VdanWkSY5l0jhbw3Mg3WAUjEp7iCD4PF59j87XyuDr6RiRqFShmE+UN+5N/hJqoED2dDYrpQ1VaMvWZ20MqGpiTIcGPqZah2/o0KoG78vX81UhkLdIpnZTVS0bKOqbh9NG/aOt4xoOZEbWPcEEPrekXR9otD3SWb2GxUTflHVjxyabmN0YctyyOqxRpPQYdaISVsF3PVQNa6/RBF7ps5rIv4WdSTjrGU0y/k9DFAvsSXqizYRZ1wrn+2C59DzFAu16qFNRpco7DQavOlNhq18qDqmIRNBDsYywkg2JcCDyaRa+fwlJMQ8Jt3RUpe/hbSInJ1pMTQHkHvGYFDLo7wS6RPaCOEYTlN8zC6YhzwehQmb5/UgGzF0J6RCHQ1nFB9qNLY3+z9QwTqwbSmcLYXxF2kGYqTiqBvH+l4hTSoGAA==') format('woff2'),
url('iconfont.woff?t=1550116961862') format('woff'),
url('iconfont.ttf?t=1550116961862') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */
url('iconfont.svg?t=1550116961862#iconfont') format('svg'); /* iOS 4.1- */
}
.iconfont {
font-family: "iconfont" !important;
font-size: 16px;
position: absolute;
top: 100px;
color: red;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-xiangyoushuangjiantou:before {
content: "\e70b";
}
第二步: 挑选相应图标以及类名
<span class="iconfont icon-xiangyoushuangjiantou"><span/>
3.Symbol
这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇文章 这种用法其实是做了一个 SVG 的集合,与另外两种相比具有如下特点:
- 支持多色图标了,不再受单色限制。
- 通过一些技巧,支持像字体那样,通过 font-size, color 来调整样式。
- 兼容性较差,支持 IE9+,及现代浏览器。
- 浏览器渲染 SVG 的性能一般,还不如 png。
第一步:引入项目下面生成的 symbol 代码
<script src="./iconfont.js"></script>
第二步:加入通用 CSS 代码(引入一次就行):
.icon {
width: 1em;
height: 1em;
vertical-align: -0.15em;
fill: currentColor;
overflow: hidden;
}
第三步:挑选相应图标并获取类名,应用于页面:
<svg class="icon" aria-hidden="true">
<use xlink:href="#icon-xxx"></use>
</svg>
这里给大家分享一下字体图标获取的途径:阿里巴巴矢量图标库