[Vue]使用fontawesome

  • 2641
  • 0
  • Vue
  • 2019-12-10

個人覺得icon可以點綴網頁使得網頁看起來活潑有趣

也可以凸顯某些網頁的特性

所以如果可以適時的使用一些icon的話

體驗上應該是會不錯的

原本我都是使用ionicons 但是發現在IE上面會無法顯示

本身也不是art 所以就改用fontawesome

 

在Vue裡面已經有fontawesome的套件, 執行以下語法即可(這是free版的 不是pro喔)

npm i --save @fortawesome/fontawesome-svg-core
npm i --save @fortawesome/free-solid-svg-icons
npm i --save @fortawesome/vue-fontawesome

安裝好了以後

在main.js 載入 fontawesome


import { library } from "@fortawesome/fontawesome-svg-core";
import { fas } from "@fortawesome/free-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome";

library.add(fas);

Vue.component("font-awesome-icon", FontAwesomeIcon);

載入的方式也很簡單 先到fontawesome的網站中尋找你需要的icon

在template 中放入此段即可

<font-awesome-icon icon="asterisk"/>

注意 有發現我在main.js中 在載入fontawesome是怎麼使用的嗎? 
在這邊 我是將整個fontawesome載入 如果我只想載入某一個icon應該怎麼辦呢?

import { fas } from "@fortawesome/free-solid-svg-icons";

必須要明確指定icon的名稱 而且在library.add中明確放入你import的icon
譬如 我目前是使用apple-alt 如下圖 需要注意的是 我選到的是如下圖綠框 Solid Style 黑框則是一般在網頁中要載入的html
可是我們現在用的是vue-fontawesom 所以在main.js要載入時 就要特別指名


main.js 中 只要載入這顆蘋果時, 將dash(-)刪除 (原本載入的class 是fas fa-apple-alt) 

import { faAppleAlt } from "@fortawesome/free-solid-svg-icons";

library.add(faAppleAlt);

在views/home.app中 只要放入以下tag在template中即可 

<template>
  <div class="home">
    <font-awesome-icon icon="apple-alt" /> //將此行加入 一定要放在 <div class="home">裡面啊!!!
  </div>
</template>

有注意到這邊 是放入apple-alt嗎 為什麼不用放入fas ?
因為默認是會載入fas的圖 其實正確寫法是這樣的 
明確指定 是fas 所以如果你不是用免費的Solid 是載入其他Pro 圖 就記得一定要明確指定

<font-awesome-icon :icon="['fas', 'apple-alt']" />

譬如

  • Reqular
    <font-awesome-icon :icon="['far', 'apple-alt']" />
  • light
    <font-awesome-icon :icon="['fal', 'apple-alt']" />

     

  • Doutone
    <font-awesome-icon :icon="['fad', 'apple-alt']" />

那如果我要載入很多圖 但是我又不想要把整個fas載入時應該要怎麼做呢?
我這邊假設我要載入另外一個Free的項目

fortawesome/free-brands-svg-icons 記得要先下載

npm -i --save @fortawesome/free-brands-svg-icons

main.js會修改成如下 import brands進來 , 並且將faApple 載入到Library中

import Vue from "vue";
import App from "./App.vue";
import router from "./router";
import store from "./store";

import { library } from "@fortawesome/fontawesome-svg-core";
import { faAppleAlt } from "@fortawesome/free-solid-svg-icons";
import { faApple } from "@fortawesome/free-brands-svg-icons"; //add the line
import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome"; 

library.add(faAppleAlt, faApple); //add faApple

Vue.component("font-awesome-icon", FontAwesomeIcon);
Vue.config.productionTip = false;

new Vue({
  router,
  store,
  render: h => h(App)
}).$mount("#app");

Home.vue 就會變成 如下 加入P 只是為了等等show 圖的時候可以比較明顯而已

<template>
  <div class="home">
    <p>
      <font-awesome-icon icon="apple-alt" />
    </p>
    <p>
      <font-awesome-icon :icon="['fab', 'apple']" />
    </p>
  </div>
</template>

有看到兩個蘋果都有載入囉!

如果我今天是要改大小和顏色應該怎麼做?
上面的蘋果 :紅色
下面的Apple Logo:放大

<template>
  <div class="home">
    <p>
      <font-awesome-icon icon="apple-alt" style="color:red" />
    </p>
    <p>
      <font-awesome-icon :icon="['fab', 'apple']" size="6x" />
    </p>
  </div>
</template>

還有其他的效果 譬如加入一點animation、固定寬度、旋轉等等 更多的設定方式可以參考官方文件

如果我今天不想要用<font-awesome-icon ...>這個tag 可以嗎? 也可以但是要稍微改一下

main.js 

import { dom } from '@fortawesome/fontawesome-svg-core'

dom.watch();

這個時候在template中就可以用i惹

<i class="fas fa-coffee"></i> 

相關的程式碼已上傳至Github

 

-----------------------------------------

有時在會走之前你就得跑

你不解決問題 就等問題解決你