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

