目前在项目中引入一个第三方矢量图标库已经成为了非常常见的需求。这是因为矢量图不仅体积小,而且在放大时不会失真,颜色也可以轻松修改。相比于传统的方式去加载大量的图片(假设你没有用“雪碧图”组合图片),它还可以节省很多次http请求,给网页性能带来巨大的提升。

下面我们就一起来看如何往项目中引入一个第三方图标库,以及如何把图标罗列到前端页面中。

引入第三方图标库

我们以最流行的阿里巴巴矢量图标库为例来介绍。首先你需要登录阿里巴巴矢量图标库官网:阿里巴巴矢量图标库,可以使用你的github账号或者微博账号登录。登录之后选择图标管理下的“我的项目”:

在我的项目页面点击右侧“新建项目”图标新建一个项目:


这里最重要的是FontClass和Font Family这两个值,FontClass的值是该图标库中图标的前缀,比如这里的前缀写成了icon-,那么你在项目中就可以使用icon-xxx来引用图标库中的图标。Font Family是图表库的名字,默认情况下,一个i标签的class中必须要带这个类名,才能引用到该图标库中的图标,不过你可以通过修改生成的iconfont.css文件来以前缀作为图标库标识,这个我们后面会讲到。

项目创建完成后,你就可以去图标库中搜索你需要的图标,或者有条件的话可以自己做。鼠标放到图标上时会有三个选项,选择第一个购物车即可添加入库:

你可以将任意多的图标添加到购物车,然后回到“我的项目”,向下滑动,可以看到下图:

点击这个购物车,选择添加至项目:

好的,现在你已经构建了自己的第三方图标库。接下来就是需要把它引入到项目中。


首先选择Font class,然后点击下载至本地,就可以得到一个download.zip压缩包,然后把压缩包解压,打开至最内层,就可以看到所有相关的图标库文件。

一般来说我们只需要这几个文件即可。在项目的public/assets下新建一个文件夹(如果没有使用webpack进行项目管理,可以将其放在任意位置,只要在需要引入图标库的HTML中可以用link标签引用到iconfont.css样式文件即可),如icon,然后把这几个文件全部粘贴进去。

最后只需要在HTML中这样引入iconfont.css:

<link rel="stylesheet" type="text/css" href="./assets/icon/iconfont.css">

现在你就可以使用<i class=“iconfont icon-xxx”>的形式来引用图标库中的图标了。注意,默认情况下,这里必须要带上iconfont,也就是你的图标库名,它才能找到对应的图标库。不过我们可以通过修改iconfont.css来避免这个“多余”的类名。

打开iconfont.css,可以看到下面的配置:

.iconfont {font-family: "iconfont" !important;font-size: 16px;font-style: normal;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;
}

这是在指定具有iconfont类名的图标,全部使用我们的iconfont图标库,我们可以把它替换成下面的代码:

[class^="icon-"], [class*=" icon-"] {font-family: "iconfont" !important;font-size: 16px;font-style: normal;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;
}

一定要注意,class*=" icon"这里的icon前面有一个空格。这里的含义是,诸如class="icon-xxx"或者class="xxx icon-xxx"这种格式的类名,都要引用iconfont这个图标库,所以这样修改之后,你就不需要在图标的类名中写iconfont了。也就是可以使用<i class=“icon-xxx”>来引用图标。

假如你需要在项目中引入多个图标库,那么你需要保证这些图标库的Font Family不能重复。如果这些图标库使用相同的前缀,那么你就不可以像上面一样通过前缀来标识图标库,而需要按默认的格式,在class中加上图标库名,防止图标库冲突。如果它们的前缀各不相同,那么你仍然可以配置class,用前缀作为图标库标识。

在页面中罗列图标

假如你想让用户看到当前图标库支持哪些图标,或者想让用户选择图标库里的图标,那么你就需要能够把图标全部罗列到页面上。你可以通过解析压缩包中附带的iconfont.json来读取所有图标的类名:

这里的font_class就是我们的图标名,不过你需要在前面拼接前缀,并且加上iconfont这个图标库名才可以显示图标,即:

<i class="iconfont icon-zujiansheji"></i>

现在如果图标库有更新,只需要重新替换上述几个文件,页面中所罗列的图标立即就会变化。

除了这种方式,我们还可以从附带的介绍文件demo_index.html中解析出图标名和类名,代码如下:

this.$axios.get("./assets/linkIcon/demo_index.html").then(res => {try{let parser = new DOMParser();   //使用原生的DOMParser解析HTML文档let innerDocument = parser.parseFromString(res.data, "text/html");//查询该HTML中罗列的图标let target = innerDocument.querySelectorAll(".content.font-class li.dib");   //遍历查询结果,把每个图标数据保存在变量中target.forEach((item, index) => {let className = item.querySelector("span").className;let iconName = item.querySelector(".name").textContent;let iconCode = item.querySelector(".code-name").textContent;this.$set(this.iconGroup, index,{className: className,iconName: iconName,iconCode: iconCode})})} catch(e){console.log(e);}
})

现在我们本地的iconGroup变量就拿到了图标库中每一个图标对象,你可以以任意的形式罗列它们,并且只需要把i标签的class设置为这里的className,立即就可以显示该图片,不需要进行额外的拼接操作。

实际上这里所写的就是一个极其简单的前端爬虫,它抓取一个HTML页面,解析其中的结构和数据。由于这是在前端环境下,因此解析HTML文件非常简单。如果使用的是node或者python,那么就需要使用相关的工具库来解析HTML文件。

引入第三方图标库,并在前台罗列图标相关推荐

  1. uniapp微信小程序引入第三方字体库

    前言 最近在使用第三方字体库,然后发现使用uniapp做小程序时引入第三方字体库有着挺多坑,收集了一些网上的资料,我大概整理下,防止以后继续踩坑 这是uniapp官网的引入字体图标方法 字体引入 从c ...

  2. Swift 引入第三方字体库

    引入第三方字体库 为了达到好的效果展现,我们往往会引入第三方字体库,以使我们工程中的字体展示达到最佳,这方面可能对于阅读之类的APP会用到的更多. 在这里也是随便从网上下载的一个字体,名为经典隶书变体 ...

  3. html游戏图标库,又一款开源图标库 CSS.GG,值得一用

    嗨,我是 Martin,也叫老王,今天推荐一款好用的开源图标库. 我们平常找图标往往会去 iconfont 但是今天,我们看了 Martin 的文章之后,就会有一个新的选择--CSS.GG Githu ...

  4. Android NDK编程,引入第三方.so库

    android自带的编译工具NDK进行编译时(非单纯的调用第三方.so而是进行ndk编程),armeabi以及armeabi-v7a文件夹下的第三方so文件将会被删除,只会产生编译后的so文件,其他的 ...

  5. ionic3.0--angular4.0 引入第三方插件库的方法

    ionic3.0 引入第三方插件 (swiper),方法很多,现详细说明下官方推荐(typings)做法. 1.全局安装Typings 1. npm install -g typings  2.搜索你 ...

  6. Vue引入第三方JavaScript库和如何创建自己的Vue插件

    一 第三方JavaScript库 前言 .vue文件 中不解析 script标签引入js文件,只能用 import 引入 有两种用法: 1.import a from '-/a' 2.import ' ...

  7. iOS中引入第三方静态库头文件找不到的问题解决方案

    在前几次项目中,因为要引入一些自己打包好的静态库,也就是第三方静态库,但是出了很多问题,有时会遇到莫名其妙的问题,明明有这个文件,但是就是显示头文件找不到.为了在以后能够快速处理这种问题,所以在这里做 ...

  8. 小程序引入第三方组件库Vant Weapp

    最近在看小程序中引入第三方组件相关知识,在引入过程中一直出现各种问题和报错最终终于成功暗中使用:以下为 npm安装的步骤及安装过程中可能的报错和小编认为的原因. vant-weapp中文文档:http ...

  9. 引入阿里图标库(iconfont)后图标黑白问题

    Font Class引入方式不支持彩色图标. 想要运用彩色图标得通过Symbol方式引入,得以SVG的方式展示. <svg class="icon" aria-hidden= ...

最新文章

  1. 2020年余丙森概率统计强化笔记-第一章 随机事件及其概率-第二章 一维随机变量及其分布
  2. python读取栅格gdal库下载链接
  3. JS+CSS全力打造的一级横向滑动,二级竖向下拉综合菜单
  4. postfix邮件服务器
  5. 关于 rm -rf * 你需要知道的
  6. 不要安排看代码的工作
  7. C/C++ 格式化读取和读取一行
  8. java opencv gamma_OpenCV函数cvAddWeighted调整alpha和gamma值 | 学步园
  9. c语言程序电子词典,C语言实现小型电子词典
  10. openGL ES进阶教程(六)美颜滤镜之美白,磨皮,红润
  11. 开源推荐:可用于生产的java聚合支付系统
  12. 专利与论文-1:为什么要写专利?专利有什么好处?
  13. zabbix3.0 之短信报警配置
  14. C++中常见的两种二义性问题及其解决方式
  15. U盘启动盘如何重装系统?U盘重装系统教程
  16. HDU 3333HDU-3874 Necklace 离线树状数组
  17. 美联邦调查局 FBI 网站被黑,数千特工信息泄露
  18. mongodb数据文件格式
  19. 4.Python数据容器之字符串(str)
  20. Linux ssh命令详解,连ssh命令都不了解就别说自己会用Linux了

热门文章

  1. JavaScript实现商品规格的组合匹配
  2. linux 字符设备驱动实战
  3. 四、py2neo 使用及构建图谱(知识图谱构建射雕人物关系)
  4. 光滑粒子流体动力学_Trapcode Particular for Mac(AE三维粒子插件)
  5. ncode2019安装教程_nCode DesignLife|ANSYS 17.0 nCode DesignLife下载 v12.0免费版 附使用教程 - 121下载站...
  6. 谈谈深度学习目标检测中的遮挡问题
  7. UG后处理—文件格式大小判断研究
  8. html让图片一直旋转,css如何设置不停旋转的图片?
  9. catia 创成钣金设计_CATIA V5R20钣金设计教程
  10. Javascript编写翻页时钟(包括定时和闹钟功能)