需求描述
有一个vue2项目,部署给客户之后发现图标无法加载出来,去问了技术支持才知道,这个项目只在局域网内使用,所以要把图标库都放在本地引用。
本地使用
情景一
如果项目中只使用了一个iconfont图标库,而你也有这个图标库的权限,那就很简单了。
假设项目中引用方式如下:
你只需要在iconfont里下载整个项目图标,放入到本地引用就可以了。
在这里下载项目代码。
下载完成后解压,得到如下的文件。
将整个目录放入到项目的static/iconfont
文件夹中,或其他存放公共资源的目录中。
本地替换直接引入即可。
情景二
如果项目中引入了多个阿里的图标库,而且你也没有图标项目的权限,意味着所有的css文件和字体文件的引用,你都需要自己处理。
假设在项目中,引入了三个图标文件,而且都没有项目的访问权限。
我们现在浏览器中打开第一个css的地址,将浏览器中的内容复制到本地的资源目录中,比如static/iconfont/iconfont.css
文件中。
其它两个css文件也需要同样的操作,重复的字体声明就不需要再复制到iconfont.css文件中了,不要把@font-face 和 .iconfont的内容再往里面复制了。
同样本地还是直接引入这个css文件,修改如下。
就这样操作完了之后,我们把引入的3个阿里图标库的链接改成了引入1个本地的css文件,但是项目目前还不能正常显示图标,因为我们还没有处理引入的字体文件。
注意看iconfont.css的前面几行代码,这里引入的字体文件还是外网地址,需要把这些字体文件也下载到本地使用。
为了更好的兼容性,更建议转换成base64来使用,复制format('truetype'')
那一行的url属性中的链接到浏览器中打开,下载对应的ttf字体文件。
打开字体转换文件网站:Base64 Encoder。
选择下载的ttf字体文件上传,转换后的结果复制下来。
根据网站提示,将iconfont.css文件的@font-face引用按如下规则修改一下:
按照如下的规则修改:
这样我们就把原来的css文件的字体引入到本地了,同样我们还得继续操作两次,因为我们总共有三个css文件,各自的ttf文件都需要这样的操作。
但是我们不能把转换的base64结果继续写在同一个@font-face里面,因为会覆盖ttf内容,到最后还是会只引入了一个ttf文件,导致有两个css文件的图标显示不出来。
错误示范
正确示范
到这我们就大功告成啦!