iconfont的三种使用方式详解


Posted in Javascript onAugust 05, 2018

在我们项目中经常要使用到iconfont,在此我们使用阿里巴巴矢量库提供的icon图标,此图标库足够为我们提供大量的图标,我们首先需要的事在阿里巴巴矢量图标库新建一个自己的账号,并且新建一个项目,这个项目包含了你所有要用到的图标。我们需要选中需要的图标放到自己的项目中,并下载下来放到自己项目下的iconfont文件夹之下。(需要更新图标时,下载包也需要重新下载更新)

方式一:使用symbol方式(本质是用svg标签构成的)

第一步:为了代码更好的复用,我们封装一个svg-icon组件,代码如下:

<template>
 <svg :class="svgClass" aria-hidden="true">
  <use :xlink:href="iconName" rel="external nofollow" ></use>
 </svg>
</template>
<script>
export default {
 name: 'svg-icon',
 props: {
  iconClass: {
   type: String,
   required: true
  },
  className: {
   type: String
  }
 },
 computed: {
  iconName() {
   return `#icon-${this.iconClass}` // 注意:因为此处绑定的svgClass名已经包含#icon,所以复制symbol名字事不需要名字的前缀了
  },
  svgClass() {
   if (this.className) {
    return 'svg-icon ' + this.className
   } else {
    return 'svg-icon'
   }
  }
 }
}
</script>
<style scoped>
.svg-icon {
 width: 1em;
 height: 1em;
 vertical-align: -0.15em;
 fill: currentColor;
 overflow: hidden;
}
</style>

第二步:在main.js中引入

import '@/assets/icons/iconfont.js' //symbol方式的相关文件
import '@/assets/icons/iconfont.css' // Unicode和fontclass方式的样式包
import SvgIcon from '@/components/SvgIcon' // 使用icon组件
Vue.component('svg-icon', SvgIcon) // 引入全局组件,也可以在局部引入

第三步:使用

在自己需要用到的组件中:

<template>
 <div>
 <!--方式一:使用svg-->
 <svg-icon class="h1" icon-class="iconfontzhizuobiaozhunbduan35"></svg-icon>
 <svg-icon class="h1" icon-class="hekriconshebeidengpao"></svg-icon>
 <!--方式二:使用unicode-->
 <i class="iconfont unicode"></i>
 <i class="iconfont unicode"></i>
 <!--方式三:使用iconfontclass-->
 <span class="iconfont icon-baojingliebiao classicon"></span>
 </div>
</template>
<script>
// import '@/assets/icons/iconfont.css'
</script>
<style>
  .h1{
 width:50px;
 height:50px;
 font-size: 100px;
 }
 .unicode{
 font-size: 30px;
 }
 .classicon{
  /* 可以自定义icon的颜色与大小 */
 font-size: 100px; 
 color:red;
 }
</style>

另外两种使用方式是使用unicode和fontclass方式,如上面的代码所示引入与使用

然后我们谈谈这三种方式的优缺点吧

unicode:

优点:

  • 兼容性最好,支持ie6+
  • 支持按字体的方式去动态调整图标大小,颜色等等

缺点:

  • 不支持多色图标
  • 在不同的设备浏览器字体的渲染会略有差别,在不同的浏览器或系统中对文字的渲染不同,其显示的位置和大小可能会受到font-size、line-height、word-spacing等CSS属性的影响,而且这种影响调整起来较为困难
  • 不直观,看unicode码很难分辨什么图标

fontclass:

  • 兼容性良好,支持ie8+
  • 相比于unicode语意明确,书写更直观。可以很容易分辨这个icon是什么。

symbol:

  • 支持多色图标了,不再受单色限制。
  • 支持像字体那样通过font-size,color来调整样式。
  • 支持 ie9+
  • 可利用CSS实现动画。
  • 减少HTTP请求。
  • 矢量,缩放不失真
  • 可以很精细的控制SVG图标的每一部分

综上所述的一些特点,个人比较推荐使用symbol或者fontclass的方式

总结

以上所述是小编给大家介绍的iconfont的三种使用方式,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
jquery下利用jsonp跨域访问实现方法
Jul 29 Javascript
原生javascript实现图片轮播效果代码
Sep 03 Javascript
js修改table中Td的值(定义td的单击事件)
Jan 10 Javascript
jQuery的attr与prop使用介绍
Oct 10 Javascript
jqplot通过ajax动态画折线图的方法及思路
Dec 08 Javascript
基于Bootstrap实现Material Design风格表单插件 附源码下载
Apr 18 Javascript
js遍历json的key和value的实例
Jan 22 Javascript
微信禁止下拉查看URL的处理方法
Sep 28 Javascript
解决Vue不能检测数组或对象变动的问题
Feb 24 Javascript
微信小程序实现页面下拉刷新和上拉加载功能详解
Dec 03 Javascript
如何制作一个Node命令行图像识别工具
Dec 12 Javascript
vue+ElementUI 关闭对话框清空验证,清除form表单的操作
Aug 06 Javascript
vue-content-loader内容加载器的使用方法
Aug 05 #Javascript
vue+element-ui集成随机验证码+用户名+密码的form表单验证功能
Aug 05 #Javascript
dts文件中删除一个node或属性的操作方法
Aug 05 #Javascript
深入理解JavaScript的async/await
Aug 05 #Javascript
js数据类型检测总结
Aug 05 #Javascript
通过函数作用域和块级作用域看javascript的作用域链
Aug 05 #Javascript
vue实现简单的MVVM框架
Aug 05 #Javascript
You might like
php下实现在指定目录搜索指定类型文件的函数
2008/10/03 PHP
php实现水印文字和缩略图的方法示例
2016/12/29 PHP
js 模拟实现类似c#下的hashtable的简单功能代码
2010/01/24 Javascript
一个简单的js动画效果代码
2010/07/20 Javascript
javascript中&quot;/&quot;运算符常见错误
2010/10/13 Javascript
javascript判断iphone/android手机横竖屏模式的函数
2011/12/20 Javascript
jquery实现非叠加式的搜索框提示效果
2014/01/07 Javascript
js判断页面中是否有指定控件的简单实例
2014/03/04 Javascript
nodejs 整合kindEditor实现图片上传
2015/02/03 NodeJs
javascript中CheckBox全选终极方案
2015/05/20 Javascript
详解JavaScript编程中正则表达式的使用
2015/10/25 Javascript
JavaScript中点击事件的写法
2016/06/28 Javascript
vue监听scroll的坑的解决方法
2017/09/07 Javascript
使用js获取伪元素的content实例
2017/10/24 Javascript
使用Vue自定义指令实现Select组件
2018/05/24 Javascript
解决select2在bootstrap modal中不能正常使用的问题
2018/08/09 Javascript
Vue 同步异步存值取值实现案例
2020/08/05 Javascript
[42:48]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第二场 12.11
2020/12/16 DOTA
深入Python解释器理解Python中的字节码
2015/04/01 Python
在IIS服务器上以CGI方式运行Python脚本的教程
2015/04/25 Python
详解 Python 与文件对象共事的实例
2017/09/11 Python
Python数据结构之图的应用示例
2018/05/11 Python
利用pyinstaller打包exe文件的基本教程
2019/05/02 Python
Windows平台Python编程必会模块之pywin32介绍
2019/10/01 Python
tensorflow实现在函数中用tf.Print输出中间值
2020/01/21 Python
Django haystack实现全文搜索代码示例
2020/11/28 Python
房地产员工找工作的自我评价
2013/11/15 职场文书
团队精神的演讲稿
2014/05/14 职场文书
求职自我评价范文100字
2014/09/23 职场文书
2014物价局民主生活会对照检查材料思想汇报
2014/09/24 职场文书
办公室主任四风问题对照检查材料思想汇报
2014/09/28 职场文书
乡镇党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
英语教师个人工作总结
2015/02/09 职场文书
课题研究阶段性总结
2015/08/13 职场文书
低门槛开发iOS、Android、小程序应用的前端框架详解
2021/10/16 Javascript
Redis实现订单过期删除的方法步骤
2022/06/05 Redis