欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

需求:

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

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

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

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

1.1 unicode 格式

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

特點(diǎn):

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

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

使用方式示例代碼:

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

1.2 font-class 方式

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

特點(diǎn):

  • 兼容性良好,支持 ie8+,及所有現(xiàn)代瀏覽器。
  • 相比于 unicode 語意明確,書寫更直觀。可以很容易分辨這個 icon 是什么。
  • 因?yàn)槭褂?class 來定義圖標(biāo),所以當(dāng)要替換圖標(biāo)時,只需要修改 class 里面的 unicode 引用。
  • 不過因?yàn)楸举|(zhì)上還是使用的字體,所以多色圖標(biāo)還是不支持的。

使用方式示例代碼:

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

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

1.3 symbol 方式

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

特點(diǎn):

  • 支持多色圖標(biāo)了,不再受單色限制。
  • 通過一些技巧,支持像字體那樣,通過 font-size,color 來調(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)庫。

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

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

2.1 封裝 svg-icon 組件

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

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

上段代碼就是圖標(biāo)的具體使用方式,如果我們每次都按照上面的方式使用,那么無疑是很麻煩的,我們不妨將上面的代碼封裝為一個組件。在需要用到圖標(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)添加上類名
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 中全局注冊

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

代碼如下:

// 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

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

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

第一種:

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

第二種:

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

第三種:

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

具體使用:

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

第二步:然后在 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 得過程非常簡單,主要分為了以下兩步:

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

接下來我們就實(shí)際使用試試,我們就直接在 App.vue 中引入幾個圖標(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 屬性值就是我們在 iconfont 網(wǎng)站復(fù)制的 iconfont
的名稱代碼。如果想要該顏色或大小,可以自行傳入一個類或者 color 屬性。

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

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

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

代碼如下:

@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'

第三步:在頁面中使用字體

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

總結(jié)

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

相關(guān)文章

  • Vue中在data里面調(diào)用method方法的實(shí)現(xiàn)

    Vue中在data里面調(diào)用method方法的實(shí)現(xiàn)

    這篇文章主要介紹了Vue中在data里面調(diào)用method方法的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 基于vue 開發(fā)中出現(xiàn)警告問題去除方法

    基于vue 開發(fā)中出現(xiàn)警告問題去除方法

    下面小編就為大家分享一篇基于vue 開發(fā)中出現(xiàn)警告問題去除方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • element-ui中導(dǎo)航組件menu的一個屬性:default-active說明

    element-ui中導(dǎo)航組件menu的一個屬性:default-active說明

    這篇文章主要介紹了element-ui中導(dǎo)航組件menu的一個屬性:default-active說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • vue+vant使用圖片預(yù)覽功能ImagePreview的問題解決

    vue+vant使用圖片預(yù)覽功能ImagePreview的問題解決

    這篇文章主要介紹了vue+vant使用圖片預(yù)覽功能ImagePreview的問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Vue3格式化Volar報(bào)錯的原因分析與解決

    Vue3格式化Volar報(bào)錯的原因分析與解決

    Volar 與vetur相同,volar是一個針對vue的vscode插件,下面這篇文章主要給大家介紹了關(guān)于Vue3格式化Volar報(bào)錯的原因分析與解決方法,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • 詳解vue-router 2.0 常用基礎(chǔ)知識點(diǎn)之router.push()

    詳解vue-router 2.0 常用基礎(chǔ)知識點(diǎn)之router.push()

    本篇文章主要介紹了vue-router 2.0 常用基礎(chǔ)知識點(diǎn)之router.push(),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • element?tooltip的使用

    element?tooltip的使用

    本文主要介紹了element?tooltip的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • vue2和vue3組件v-model區(qū)別詳析

    vue2和vue3組件v-model區(qū)別詳析

    v-model通常用于input的雙向數(shù)據(jù)綁定,它并不會向子組件傳遞數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于vue2和vue3組件v-model區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • vue使用?vue-socket.io三種方式及踩坑實(shí)例解析

    vue使用?vue-socket.io三種方式及踩坑實(shí)例解析

    這篇文章主要為大家介紹了vue使用?vue-socket.io三種方式及踩坑實(shí)例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • vantUI 獲得piker選中值的自定義ID操作

    vantUI 獲得piker選中值的自定義ID操作

    這篇文章主要介紹了vantUI 獲得piker選中值的自定義ID操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11

最新評論