iconfont的三種使用方式詳解
在我們項(xiàng)目中經(jīng)常要使用到iconfont,在此我們使用阿里巴巴矢量庫提供的icon圖標(biāo),此圖標(biāo)庫足夠?yàn)槲覀兲峁┐罅康膱D標(biāo),我們首先需要的事在阿里巴巴矢量圖標(biāo)庫新建一個(gè)自己的賬號(hào),并且新建一個(gè)項(xiàng)目,這個(gè)項(xiàng)目包含了你所有要用到的圖標(biāo)。我們需要選中需要的圖標(biāo)放到自己的項(xiàng)目中,并下載下來放到自己項(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)整起來較為困難
- 不直觀,看unicode碼很難分辨什么圖標(biāo)
fontclass:
- 兼容性良好,支持ie8+
- 相比于unicode語意明確,書寫更直觀??梢院苋菀追直孢@個(gè)icon是什么。
symbol:
- 支持多色圖標(biāo)了,不再受單色限制。
- 支持像字體那樣通過font-size,color來調(diào)整樣式。
- 支持 ie9+
- 可利用CSS實(shí)現(xiàn)動(dòng)畫。
- 減少HTTP請(qǐng)求。
- 矢量,縮放不失真
- 可以很精細(xì)的控制SVG圖標(biāo)的每一部分
綜上所述的一些特點(diǎn),個(gè)人比較推薦使用symbol或者fontclass的方式
總結(jié)
以上所述是小編給大家介紹的iconfont的三種使用方式,希望對(duì)大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!
相關(guān)文章
引用其它js時(shí)如何同時(shí)處理多個(gè)window.onload事件
引用其它js時(shí),其js卻使用了window.onload事件,這樣的話,引入的頁面的onload事件就有可能執(zhí)行不了,那么該如何解決呢?祥看下文2014-09-09
微信小程序發(fā)布新版本時(shí)自動(dòng)提示用戶更新的方法
這篇文章主要介紹了微信小程序發(fā)布新版本時(shí)自動(dòng)提示用戶更新的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用小程序具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
js setTimeout實(shí)現(xiàn)延遲關(guān)閉彈出層
有時(shí)候我們希望彈出層能夠?qū)崿F(xiàn)延遲關(guān)閉,并且鼠標(biāo)在彈出層區(qū)域移動(dòng)的時(shí)候能夠保持顯現(xiàn),下面是具體的實(shí)現(xiàn)代碼。2010-04-04
符合W3C Web標(biāo)準(zhǔn)的圖片連續(xù)無間隙水平滾動(dòng)
很久以前就有這個(gè)問題,總是找不到通用的,或比較簡(jiǎn)單的“圖片連續(xù)無間隙向左滾動(dòng),無間隙向右滾動(dòng),符合W3C Web標(biāo)準(zhǔn)”2008-06-06
javascript實(shí)現(xiàn)隨時(shí)變化著的背景顏色
這篇文章主要介紹了javascript實(shí)現(xiàn)隨時(shí)變化著的背景顏色的方法,非常的簡(jiǎn)單實(shí)用,有需要的小伙伴可以直接拿走。2015-04-04
Axios取消重復(fù)請(qǐng)求的方法實(shí)例詳解
在開發(fā)中,經(jīng)常會(huì)遇到接口重復(fù)請(qǐng)求導(dǎo)致的各種問題,這篇文章主要給大家介紹了關(guān)于Axios取消重復(fù)請(qǐng)求的相關(guān)資料,需要的朋友可以參考下2021-06-06
javascript實(shí)現(xiàn)點(diǎn)擊按鈕切換圖片
這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)點(diǎn)擊按鈕切換圖片,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08
利用JS、CSS實(shí)現(xiàn)列表自動(dòng)滑動(dòng)滾動(dòng)效果實(shí)例
這篇文章主要給大家介紹了關(guān)于利用JS、CSS實(shí)現(xiàn)列表自動(dòng)滑動(dòng)滾動(dòng)效果的相關(guān)資料,本人在項(xiàng)目中遇到這樣的需求,親自來做的,通過html頁面配合js,css來做出的列表自動(dòng)滑動(dòng),需要的朋友可以參考下2024-07-07

