最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue3項(xiàng)目引入阿里iconfont圖標(biāo)與字體及使用教程

 更新時(shí)間:2023年05月09日 08:46:22   作者:就叫小黃好了鴨  
Iconfont國(guó)內(nèi)功能很強(qiáng)大且圖標(biāo)內(nèi)容很豐富的矢量圖標(biāo)庫(kù),提供矢量圖標(biāo)下載、在線存儲(chǔ)、格式轉(zhuǎn)換等功能,下面這篇文章主要給大家介紹了關(guān)于Vue3項(xiàng)目引入阿里iconfont圖標(biāo)與字體及使用教程,需要的朋友可以參考下

需求:

將 iconfont 阿里圖標(biāo)庫(kù)的圖標(biāo)與字體引入到我們的 Vue3 + vite + TS 項(xiàng)目中來(lái)!

1.常用圖標(biāo)格式簡(jiǎn)介

我們使用圖標(biāo)的方式有很多種,比如說(shuō)直接使用 png、jpg 等圖片格式,這是最原始的方式,所以我們這里不過(guò)多闡述,它們的優(yōu)缺點(diǎn)相信大家也知道。

這里我們主要對(duì)比阿里圖標(biāo)庫(kù)提供 3 種圖標(biāo)引用方式:unicode、font-class、symbol。

1.1 unicode 格式

這種方式比較原始,主要是將圖標(biāo)以字體的形式渲染到網(wǎng)頁(yè)上,既然是以字體的格式,那么它的優(yōu)缺點(diǎn)也是顯而易見(jiàn)的。

特點(diǎn):

  • 兼容性最好,支持 ie6+,及所有現(xiàn)代瀏覽器。
  • 支持按字體的方式去動(dòng)態(tài)調(diào)整圖標(biāo)大小,顏色等等。
  • 但是因?yàn)槭亲煮w,所以不支持多色。只能使用平臺(tái)里單色的圖標(biāo),就算項(xiàng)目里有多色圖標(biāo)也會(huì)自動(dòng)去色。

所以目前來(lái)說(shuō),我們并不建議以 Unicode 的方式引入 iconfont 圖標(biāo)。

使用方式示例代碼:

<i class="iconfont">&#x33;</i>

1.2 font-class 方式

font-class 方式本質(zhì)上還是使用的字體的形式,所以它的優(yōu)缺點(diǎn)其實(shí)和 unicode 方式差不多,但是卻運(yùn)用很廣泛,我們可以來(lái)看看它的特點(diǎn),就知道為什么了。

特點(diǎn):

  • 兼容性良好,支持 ie8+,及所有現(xiàn)代瀏覽器。
  • 相比于 unicode 語(yǔ)意明確,書(shū)寫(xiě)更直觀??梢院苋菀追直孢@個(gè) icon 是什么。
  • 因?yàn)槭褂?class 來(lái)定義圖標(biāo),所以當(dāng)要替換圖標(biāo)時(shí),只需要修改 class 里面的 unicode 引用。
  • 不過(guò)因?yàn)楸举|(zhì)上還是使用的字體,所以多色圖標(biāo)還是不支持的。

使用方式示例代碼:

<i class="iconfont icon-xxx"></i>

可以看到它最大的特點(diǎn)就是語(yǔ)義明確,所以這是它很流行的重要原因之一。

1.3 symbol 方式

這種方式相較于而言比較新,它主要利用了 svg 這種格式,在以前,由于它的瀏覽器兼容性不太好,所以沒(méi)有大規(guī)模的流行。不過(guò)就目前來(lái)看,兼容性基本上不是問(wèn)題了,畢竟 IE 都淘汰了。所以它是目前比較推崇的圖標(biāo)引用格式,至于為什么,我們一起來(lái)看看它的特點(diǎn)。

特點(diǎn):

  • 支持多色圖標(biāo)了,不再受單色限制。
  • 通過(guò)一些技巧,支持像字體那樣,通過(guò) font-size,color 來(lái)調(diào)整樣式。
  • 兼容性較差,支持 ie9 及現(xiàn)代瀏覽器。
  • 瀏覽器渲染 svg 的性能一般,還不如 png。

使用示例代碼:

<svg class="icon" aria-hidden="true">
    <use xlink:href="#icon-xxx"></use>
</svg>

可以看到它的最大特點(diǎn)就是支持多色圖標(biāo)了,而且還支持向字體那樣調(diào)整樣式了,雖然它的渲染性能不及 png,但是它的其它好處可比 png 多多了,所以我們通常建議項(xiàng)目中使用 symbol 的方式引入圖標(biāo)庫(kù)。

這也是本篇文章將要講解的方式。

2.項(xiàng)目引入 iconfont

2.1 封裝 svg-icon 組件

我們?cè)?iconfont 官網(wǎng)上可以看到給出了 symbol 引用示例,代碼如下:

<svg class="icon" aria-hidden="true">
    <use xlink:href="#icon-xxx"></use>
</svg>

上段代碼就是圖標(biāo)的具體使用方式,如果我們每次都按照上面的方式使用,那么無(wú)疑是很麻煩的,我們不妨將上面的代碼封裝為一個(gè)組件。在需要用到圖標(biāo)的地方直接引入我們的組件即可了。

第一步:在 components 目錄下新建 SvgIcon.vue 文件。

代碼如下:

// src/components/SvgIcon.vue
<template>
  <svg :class="svgClass" aria-hidden="true">
    <use :xlink:href="iconClassName" :fill="color" />
  </svg>
</template>
<script setup lang="ts">
import { computed } from 'vue';
const props = defineProps({
  iconName: {
    type: String,
    required: true
  },
  className: {
    type: String,
    default: ''
  },
  color: {
    type: String,
    default: '#409eff'
  }
});
// 圖標(biāo)在 iconfont 中的名字
const iconClassName = computed(()=>{
  return `#${props.iconName}`;
})
// 給圖標(biāo)添加上類(lèi)名
const svgClass = computed(() => {
  if (props.className) {
    return `svg-icon ${props.className}`;
  }
  return 'svg-icon';
});
</script>
<style scoped>
.svg-icon {
  width: 1em;
  height: 1em;
  position: relative;
  fill: currentColor;
  vertical-align: -2px;
}
</style>

第二步:在 main.ts 中全局注冊(cè)

組件封裝好后我們還需要全局注冊(cè)一下,不然每次引用圖標(biāo)的時(shí)候還得單獨(dú)引入一次該組件。所以我們就在 main.ts 里面全局注冊(cè)一下。

代碼如下:

// main.ts
import { createApp } from 'vue'
import App from './App.vue'
import SvgIcon from './components/SvgIcon/SvgIcon.vue'
const app = createApp(App)
app.component('SvgIcon', SvgIcon);
app.mount('#app')

2.2 引入 iconfont

接下來(lái)我們就需要去 iconfont 官網(wǎng)了,新建一個(gè) iconfont 資源庫(kù),存放自己的 iconfont。如下圖所示:

我們選中 symbol 模式,這里我介紹三種引入方式:

第一種:

直接在線引入官網(wǎng)提供的在線 js 地址,我們直接以 script
標(biāo)簽的形式引入即可。這種方式最為簡(jiǎn)單,但是也有不好的一點(diǎn),需要用戶有網(wǎng)絡(luò)環(huán)境,而且得保證 iconfont 網(wǎng)站沒(méi)有崩掉。

第二種:

直接下載至本地,我們從官網(wǎng)直接將代碼下載下來(lái),然后放到我們項(xiàng)目中引用,也是可以的。不過(guò)這種方式稍顯麻煩,每次更新圖標(biāo)庫(kù)之后都得重新下載一遍。

第三種:

這也是我比較喜歡的方式,也就是將在線地址中的代碼直接復(fù)制粘貼到我們項(xiàng)目中來(lái),這種方式最為簡(jiǎn)單,每次更新圖標(biāo)庫(kù)之后只需要重新復(fù)制一下代碼即可。這里我們也將采用這種方式。

具體使用:

第一步:在項(xiàng)目 assets 目錄下新建 iconfont 目錄,在該目錄下新建 iconfont.js 文件,然后將 iconfont 在線地址中提供的代碼全部復(fù)制過(guò)來(lái)。如下圖:

第二步:然后在 main.ts 中引入 iconfont.js。

代碼如下:

import { createApp } from 'vue'
import App from './App.vue'
import SvgIcon from './components/SvgIcon.vue'
import './assets/iconfont/iconfont.js';
const app = createApp(App)
app.component('SvgIcon', SvgIcon);
app.mount('#app')

3.項(xiàng)目中具體使用 iconfont

引入 iconfont 得過(guò)程非常簡(jiǎn)單,主要分為了以下兩步:

  • 封裝 svg-icon 組件
  • 引入 iconfont 生成的 js 代碼

接下來(lái)我們就實(shí)際使用試試,我們就直接在 App.vue 中引入幾個(gè)圖標(biāo)試試。

代碼如下:

<template>
  <img alt="Vue logo" src="./assets/logo.png" />
  <svg-icon iconName="icon-gongzuoleixing"></svg-icon>
  <svg-icon iconName="icon-yulan" className="yulan"></svg-icon>
</template>

可以看到我們的圖標(biāo)已經(jīng)可以使用了,其中 iconName 屬性值就是我們?cè)?iconfont 網(wǎng)站復(fù)制的 iconfont
的名稱(chēng)代碼。如果想要該顏色或大小,可以自行傳入一個(gè)類(lèi)或者 color 屬性。

除此之外,如果你有自己下載好的 svg 文件,那么也是可以通過(guò)上面方式引入的,只需要將 iconName 改為你自己本地的 svg 名稱(chēng)即可。

4.項(xiàng)目中使用 阿里字體

第一步:在項(xiàng)目 assets 目錄下新建 iconfont 目錄,在該目錄下新建 font.css 文件,然后將 阿里字體在線地址中提供的代碼全部復(fù)制過(guò)來(lái)

代碼如下:

@font-face {
  font-family: "思源宋體 Regular";
  font-weight: 400;
  src: url("http://at.alicdn.com/wf/webfont/xh4nx6fdEXTy/0jXUXbuJbGMJTGE1-Z9ES.woff2") format("woff2"),
    url("http://at.alicdn.com/wf/webfont/xh4nx6fdEXTy/BXimMREEQDbyuQ0kj-J5S.woff") format("woff");
  font-display: swap;
}
@font-face {
  font-family: "思源宋體 Medium";
  font-weight: 500;
  src: url("http://at.alicdn.com/wf/webfont/xh4nx6fdEXTy/SYySrGV-pN0GFAJ-cof25.woff2") format("woff2"),
    url("http://at.alicdn.com/wf/webfont/xh4nx6fdEXTy/Q9kaOvRthiBt50w-wLg7f.woff") format("woff");
  font-display: swap;
}

第二步:在main.ts文件中全局引入該文件

import '@/assets/font/font.css'

第三步:在頁(yè)面中使用字體

.font-text {
	font-family: "思源宋體 Medium";
}

總結(jié)

到此這篇關(guān)于Vue3項(xiàng)目引入阿里iconfont圖標(biāo)與字體及使用的文章就介紹到這了,更多相關(guān)Vue3引入阿里iconfont內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 深入探究Vue中三種不同的props用法

    深入探究Vue中三種不同的props用法

    Vue?的核心功能之一在于?props?的使用,props?是我們?cè)?Vue?中從父組件到子組件傳遞數(shù)據(jù)的方式,但并非所有?props?都是一樣的,本文我們會(huì)深入學(xué)習(xí)這三種不同類(lèi)型的?props,看看它們有何不同,以及何時(shí)使用它們,需要的朋友可以參考下
    2024-03-03
  • Vue關(guān)于數(shù)據(jù)綁定出錯(cuò)解決辦法

    Vue關(guān)于數(shù)據(jù)綁定出錯(cuò)解決辦法

    這篇文章主要介紹了Vue關(guān)于數(shù)據(jù)綁定出錯(cuò)解決辦法的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • vue 解決路由只變化參數(shù)頁(yè)面組件不更新問(wèn)題

    vue 解決路由只變化參數(shù)頁(yè)面組件不更新問(wèn)題

    今天小編就為大家分享一篇vue 解決路由只變化參數(shù)頁(yè)面組件不更新問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • vue內(nèi)置組件transition簡(jiǎn)單原理圖文詳解(小結(jié))

    vue內(nèi)置組件transition簡(jiǎn)單原理圖文詳解(小結(jié))

    這篇文章主要介紹了vue內(nèi)置組件transition簡(jiǎn)單原理圖文詳解(小結(jié)),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • vue中的render函數(shù)、h()函數(shù)、函數(shù)式組件詳解

    vue中的render函數(shù)、h()函數(shù)、函數(shù)式組件詳解

    在vue中我們使用模板HTML語(yǔ)法來(lái)組建頁(yè)面的,使用render函數(shù)我們可以用js語(yǔ)言來(lái)構(gòu)建DOM,這篇文章主要介紹了vue中的render函數(shù)、h()函數(shù)、函數(shù)式組件,需要的朋友可以參考下
    2023-02-02
  • vuex實(shí)現(xiàn)的簡(jiǎn)單購(gòu)物車(chē)功能示例

    vuex實(shí)現(xiàn)的簡(jiǎn)單購(gòu)物車(chē)功能示例

    這篇文章主要介紹了vuex實(shí)現(xiàn)的簡(jiǎn)單購(gòu)物車(chē)功能,結(jié)合實(shí)例形式分析了vuex購(gòu)物車(chē)組件相關(guān)商品列表、購(gòu)物車(chē)創(chuàng)建、添加、刪除、清空等相關(guān)操作技巧,需要的朋友可以參考下
    2019-02-02
  • element-ui el-select下拉框el-date-picker彈出框定位問(wèn)題解決方案(推薦)

    element-ui el-select下拉框el-date-picker彈出框定位問(wèn)題解決方案(推薦)

    項(xiàng)目開(kāi)發(fā)過(guò)程中發(fā)現(xiàn)el-select和el-date-picker彈出框顯示時(shí)候,滾動(dòng)屏幕,導(dǎo)致彈出框定位出現(xiàn)問(wèn)題,這篇文章主要介紹了element-ui el-select下拉框el-date-picker彈出框定位問(wèn)題解決方案(推薦),需要的朋友可以參考下
    2024-07-07
  • Vue-Router實(shí)現(xiàn)頁(yè)面正在加載特效方法示例

    Vue-Router實(shí)現(xiàn)頁(yè)面正在加載特效方法示例

    這篇文章主要給大家介紹了利用Vue-Router實(shí)現(xiàn)頁(yè)面正在加載特效方法示例,文中給出了詳細(xì)的示例代碼,相信對(duì)大家具有一定的參考價(jià)值,有需要的朋友們下面來(lái)一起看看吧。
    2017-02-02
  • 一文秒懂Vue3的v-model

    一文秒懂Vue3的v-model

    v-model 是 Vue 內(nèi)置的指令作為屬性接收一個(gè)變量(不能是常量)綁定到普通組件和自定義組件中,本文給大家介紹Vue3的v-model示例代碼,感興趣的朋友跟隨小編一起看看吧
    2023-02-02
  • vue使用axios實(shí)現(xiàn)文件上傳進(jìn)度的實(shí)時(shí)更新詳解

    vue使用axios實(shí)現(xiàn)文件上傳進(jìn)度的實(shí)時(shí)更新詳解

    最近在學(xué)習(xí)axios,然后項(xiàng)目就用到了,所以這篇文章主要給大家介紹了關(guān)于vue中利用axios實(shí)現(xiàn)文件上傳進(jìn)度的實(shí)時(shí)更新的相關(guān)資料,文中先對(duì)axios進(jìn)行了簡(jiǎn)單的介紹,方法大家理解學(xué)習(xí),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-12-12

最新評(píng)論

冷水江市| 马山县| 宁德市| 邛崃市| 浦城县| 东乌珠穆沁旗| 南京市| 龙泉市| 图们市| 蒙城县| 苏州市| 沁水县| 偏关县| 山阴县| 台州市| 河南省| 左云县| 光泽县| 鹰潭市| 潜山县| 武威市| 广水市| 牟定县| 盐边县| 玛曲县| 长阳| 金溪县| 灵丘县| 阜新市| 兴义市| 乌海市| 大足县| 沁源县| 东光县| 灵寿县| 林口县| 崇文区| 西盟| 宜兰县| 高阳县| 光山县|