不得不学的图标引入🎡
坚强的信心,能使平凡的人做出惊人的事业👻
前言
为什么要使用字体图标,有很多同学认为,图片已经满足了我们的日常需求为什么还要字体图标呢。大概有以下几点(敲黑板👨💻)
- 加载速度快,体积小🎈。
- 字体图标的颜色和大小都是可以设置的,如果使用图片的话就只能换一张图🎭。
- 字体图标有独立的分辨率,无论是网页端💻和手机端📱都有很好的展示。
字体图标工具选型
由于我们公司使用的是阿里巴巴矢量图标库
来生成的,我下面的分享都会以这个为例。其他工具也都是类似哒🎨
不同框架引入的方式多多少少会有所不同🧐,我把常用到的几种方式都来哔哔一下,请君笑纳♥。
使用create-react-app
创建的工程中引入iconfont
如果还有老铁不知道怎么使用create-react-app
创建项目的看这里
首先大家要清楚一点,前端工程师主要来负责图标的展示,创造图标的这些小事UI
设计师肯定手到擒来😏,我们交给他就可以啦,如果公司没有UI
设计师,也不用怕。图标库提供了相当多的图标。相信你肯定能找到属于你的那一款。
- 注册,登录(不多说啦😀)
- 登录成功之后点击小云彩上传
svg
图标(一定是svg
哦😙)
- 选择第一个框框(支持同时上传多个)
- 根据需求自行选择要不要去色。
- 鼠标悬浮到上传的图标点击购物车(支持批量加入购物车,不花钱的哦🤣)
- 下载代码
下载代码成功之后双击打开文件夹下面的demo_index.html
有三种引用方式本文只讲后两种(第一种是真的不常用😑)
这三种区别在demo.html
中都有明确的说明,我就不班门弄斧啦🎉。
FontClass
打开刚才创建的react
项目在public
文件夹下新建一个文件夹起名font
(随意起名)然后把下载的图标代码全部拷贝到font
目录下demo.html
和demo.css
可以不要.
然后在index.html
中引入iconfont.css
1 |
|
然后在全局任意页面使用标签绑定类名就可以了(个人建议使用i标签或者span标签)
1 |
|
启动项目npm start
大功告成🎨(不成功来找我!)
Symbol
在index.html
中引入iconfont.js
1 |
|
全局任意页面使用
1 |
|
启动项目npm start
你发现你失败了,WTF
😲我这完全按照文档复制粘贴的啊,为什么会失败!。
不要忘了我们现在是在jsx
里面写html
跟普通的html
还是有些区别的 查阅文档之后我们改成这个样子。
1 |
|
使用create-react-app
创建的工程中使用ant.design自定义图标
ant.design
提供了丰富图标但有的时候可能它提供的图标也不能满足我们日常的需求。我们可以使用以上两种阿里巴巴提供的方式进行引入,也可以使用ant.design
提供的默认方法
ant.design不同版本的引入方式可能会有区别,具体的引入方式还要以官网为主
注:
scriptUrl
后面对应的地址就是我们在Symbol
方式引入的js
文件,如果js文件放在了public目录下不需要使用require,因为public不会参与打包。
使用ant.desin.pro创建的项目引入IconFont
使用ant.design.pro
搭建的项目在src/defaultSetting.js
中有一个iconfontUrl
字段,将之前下载好的字体文件放在public/fonts
下面,把js
文件引入即可。
使用方法:
- 如果是路由菜单的话直接在路由上将对应的icon名字写在icon属性后面就可以了。
如果是某个页面展示图标
FontClass
方式 需要在global.less
文件中引入css
文件,使用的话使用i
标签或者span
标签引入就可以📣。
1 |
|
Symbol
方式 无需引入css
文件因为我们在defaultSetting
中已经配置了js
文件。直接按照上文提到的Symbol
使用方式就可以📣。
1 |
|
当然 ant.design.pro 也集成了ant.design也可以使用ant.design提供的默认方法引入。
使用vue-cli
搭建的vue
项目
阿里巴巴提供的方式都可以使用,只是引入的位置有区别。
- FontClass 在入口文件
main.js
中引入字体的css文件
在全局任意页面使用如下标签即可。
1 |
|
- Symbol 在入口文件
main.js
中引入字体的js文件
在全局任意页面使用如下标签即可。
1 |
|
如何自动更新svg字体图标
上面的这些方式,如果你习惯了之后你会发现一个问题,就是我们每次如果有新的图标加入的时候我们都要重复一次之前的动作 上传所有svg
>下载图标代码>替换font
文件夹。要说麻烦其实也不太麻烦,就是几分钟的事。我们肯定不想一直重复做相同的事情。
在线链接
阿里巴巴还是强啊!他提供了在线链接😃,只要我们图标库的项目里面增加了图标他就会自动生成链接,这就相当于我们不需要去下载图标代码了,直接使用他在线的链接就可以了FontClass
和Symbol
都有。敲黑板📏!!!
流程大概就是这样,我们需要在阿里巴巴图标库中创建一个项目,然后将自己想要的图标导入到自己的项目,他会自动生成在线链接,我们就不需要在下载图标代码到自己的项目了,直接把上面的本地路径改成他的在线链接就可以了。好活🤣
当然缺点也是很明显的,这种方式就相当于是阿里巴巴帮助我们维护svg
图标,如果某一天链接不通了,网络不通了,领导还是会找你。只不过这是一种简单快捷的方法,我们还是自己维护svg
图标才能做到心里有数。
svgtofont.js
新建项目起名为svgToFont
在文件夹中执行npm init --yes
,在svgToFont文件夹下新建文件夹起名为svg
将你要用到的svg
图标全部拷贝到svg
文件夹中,安装svgtofont
1 |
|
安装完成之后新建app.js
文件将下面的代码全部拷贝到app.js中
1 |
|
然后在项目根目录执行node app.js
不出意外的话你会看到fonts
目录,里面的内容基本上是和阿里巴巴图标库下载的代码一样。也是同样按照上面提供的那些方式,进行引入,使用就可以。但是现在变成了我们自己维护svg
图标。
注意
symbol
方式引用的时候会有些不同,因为字体图标生成之后你会发现没有js
文件,所以在使用的时候要把symbol.svg的路径加上。附上xlinkHref对应路径的详解,我这个路径弄了好久😣。
1 |
|
webpack-iconfont-plugin-nodejs
这个webpack
插件大概的原理就是监听svg
文件的变化,当有修改或添加,删除svg文件的时候就会生成对应的字体图标代码🎍。
- 方式一
我们可以按照新建项目的形式来维护我们的svg
图标(类似于svgtofont.js
)🧵。
- 方式二
因为webpack-iconfont-plugin-nodejs
是支持热加载的可以实时监听svg
文件的变化,我们也可以在webpack插件中使用它,需要将使用的svg图标全部拷贝到项目中而不是新建一个项目来维护。🎃具体使用方法看这里
总结
总而言之,在日常的开发中,字体图标还是特别常见的,以上几种方式,应该可以满足基本的开发了🧐,如果有大佬还有更优雅的方式,欢迎在评论区狠狠的教育我,一起进步🤣。
参考文章
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!谢谢