iconfont的三種使用方式詳解
在我們項(xiàng)目中經(jīng)常要使用到iconfont,在此我們使用阿里巴巴矢量庫(kù)提供的icon圖標(biāo),此圖標(biāo)庫(kù)足夠?yàn)槲覀兲峁┐罅康膱D標(biāo),我們首先需要的事在阿里巴巴矢量圖標(biāo)庫(kù)新建一個(gè)自己的賬號(hào),并且新建一個(gè)項(xiàng)目,這個(gè)項(xiàng)目包含了你所有要用到的圖標(biāo)。我們需要選中需要的圖標(biāo)放到自己的項(xiàng)目中,并下載下來(lái)放到自己項(xiàng)目下的iconfont文件夾之下。(需要更新圖標(biāo)時(shí),下載包也需要重新下載更新)
方式一:使用symbol方式(本質(zhì)是用svg標(biāo)簽構(gòu)成的)
第一步:為了代碼更好的復(fù)用,我們封裝一個(gè)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}` // 注意:因?yàn)榇颂幗壎ǖ膕vgClass名已經(jīng)包含#icon,所以復(fù)制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方式的相關(guān)文件 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方式,如上面的代碼所示引入與使用
然后我們談?wù)勥@三種方式的優(yōu)缺點(diǎn)吧
unicode:
優(yōu)點(diǎn):
- 兼容性最好,支持ie6+
- 支持按字體的方式去動(dòng)態(tài)調(diào)整圖標(biāo)大小,顏色等等
缺點(diǎn):
- 不支持多色圖標(biāo)
- 在不同的設(shè)備瀏覽器字體的渲染會(huì)略有差別,在不同的瀏覽器或系統(tǒng)中對(duì)文字的渲染不同,其顯示的位置和大小可能會(huì)受到font-size、line-height、word-spacing等CSS屬性的影響,而且這種影響調(diào)整起來(lái)較為困難
- 不直觀,看unicode碼很難分辨什么圖標(biāo)
fontclass:
- 兼容性良好,支持ie8+
- 相比于unicode語(yǔ)意明確,書寫更直觀。可以很容易分辨這個(gè)icon是什么。
symbol:
- 支持多色圖標(biāo)了,不再受單色限制。
- 支持像字體那樣通過(guò)font-size,color來(lái)調(diào)整樣式。
- 支持 ie9+
- 可利用CSS實(shí)現(xiàn)動(dòng)畫。
- 減少HTTP請(qǐng)求。
- 矢量,縮放不失真
- 可以很精細(xì)的控制SVG圖標(biāo)的每一部分
綜上所述的一些特點(diǎn),個(gè)人比較推薦使用symbol或者fontclass的方式
總結(jié)
以上所述是小編給大家介紹的iconfont的三種使用方式,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!
相關(guān)文章
JavaScript使用高階生成器進(jìn)行過(guò)濾以生成素?cái)?shù)
生成器大家都知道是怎么一回事,但是高階生成器又是什么東西呢,下面小編就來(lái)為大家簡(jiǎn)單介紹一下如何使用高階生成器進(jìn)行過(guò)濾以生成素?cái)?shù)吧2024-02-02echartjs實(shí)現(xiàn)cross十星輔助線實(shí)現(xiàn)示例詳解
這篇文章主要為大家介紹了echartjs實(shí)現(xiàn)cross十星輔助線實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12js利用事件的阻止冒泡實(shí)現(xiàn)點(diǎn)擊空白模態(tài)框的隱藏
點(diǎn)擊彈出某個(gè)框框,但是,有時(shí)候不想操作,就想點(diǎn)擊某個(gè)空白處,隱藏該框框,關(guān)于這一點(diǎn),下面有個(gè)具體的實(shí)現(xiàn)2014-01-01JavaScript編寫一個(gè)簡(jiǎn)易購(gòu)物車功能
這篇文章主要為大家詳細(xì)介紹了JavaScript簡(jiǎn)易購(gòu)物車功能的編寫代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09firefox TBODY 用js顯示和隱藏時(shí)出現(xiàn)錯(cuò)位的解決方法
今天幫別人寫一個(gè)網(wǎng)頁(yè),發(fā)現(xiàn):當(dāng)用javascript動(dòng)態(tài)設(shè)置tr.style.display = "block"顯示某行時(shí),使用IE瀏覽沒(méi)有問(wèn)題,但使用firefox瀏覽時(shí)該行被移到了其它行的后面,很是詫異。2008-12-12