使用Font Awesome作為網站icon與製作字型icon

實作上為了節省流量,用字形代替圖片是很常見的作法,

今天來試試引入字型取代部分常見的 icon 圖片。

 

本篇文章的 demo code 可以在 這邊 查看:

 

本次安裝的是常見的 fontawesome

npm install --save @fortawesome/fontawesome-free

 

裝完之後檢查一下 package.json

多了一行

"@fortawesome/fontawesome-free": "^5.13.0",

這樣就是安裝成功了。

 

參考資料
Font Awesome

 
 

接下來要引入字型,

// router.js

import '@fortawesome/fontawesome-free/css/all.css'

 

注意是 f o r t 喔(不是font)

如果同時也有使用比較舊版的 fontawesome(ex. 4.7版本

all.css 的 font-family 記得給他多加一個 fontawesome

ex.

.fa,
.fas {
font-family: 'Font Awesome 5 Free',fontawesome;
font-weight: 900; }

 

否則有些原本的字型會因此出不來。

只是經驗談,本篇文章沒有,所以就不用加。

 

接著來測試字型是否引入成功。

新增 src/views/fontTest.vue

<div class="testfont">
    <h2>fontawesome test</h2>

    <i class="fas fa-cat"></i>CAT
    <i class="fas fa-dog"></i>DOG
    <i class="fas fa-cloud"></i>CLOUD
</div>

 

在header新增頁面連結

// header.vue

<div class="somecode">
    <router-link to="/fontTest">fontTest</router-link>
</div>

 

router.js 記得也要加上

const fontTest = () => import('../views/fontTest')

routes: [{ path: '/fontTest', component: fontTest }]

 

如果覺得每次新增頁面都要多這麼多行有點煩,

也可以使用 require 的方式:

routes: [{ path: '/fontTest', component: require('../views/fontTest').default }]

 

這樣寫就不用 import 了
 
 

完成引入之後視個人喜好加點樣式就可以打開頁面看看效果了。

// src/assets/style/style.css

.testfont p i{margin:5px;color:#dd8888;font-size:120px;}

 

用字型代替圖片很方便的優點之一就是樣式就跟調整一般字型一樣,

不管顏色或是大小都可以直接透過 css 做調整。

 
 

自製字型

 
雖然 fontawesome 圖片齊全,

但也難免會有一些時候我們想要使用自己的圖片,

接下來來試試把自己想要的圖片做成字型。

 

這邊是找到網站幫忙把圖片轉字型,

不過看了幾個,都是限定使用 svg 檔,

所以先來找個可以直接線上轉 svg 的網站吧 => convertio

 

網站說明很清楚:

上傳檔案 → 選擇要轉檔的型態(svg) → 然後下載。
 

用網路上抓的一張小豬圖片來當範例。

丟上網站,把svg檔案下載回來。

我是使用icomoon把圖片轉字型。

 

注意:圖片如果是白色的,背景不能是透明,否則轉出來就是一片白。

(BY 被坑了整整半小時找不到問題的我)

 

點右上角的 icomoon App 進去之後,

點左上角的 Import Icons 鈕,再選擇已繪製好的svg檔。

然後選擇右下角 generate fonts ,

等幾秒後,一樣是在右下角,點選 download 把字型包下載回來,會是個 zip 檔。

解壓縮之後把 fonts 資料夾與 style.css 放到專案裡面即可。

 

記得在 router.js 中引用壓縮檔裡的 style.css

import '../assets/style/icomoon.css'

 

這邊我改成 icomoon.css 以跟其他檔案區別,

注意相對路徑。

 

以我的專案為例,

assets 資料夾目前的檔案目錄為

assets
|___fonts
|___images
|___style
|___icomoon.css
|___style.css
 

所以 icomoon.css 裡面引用檔案的路徑就要修正為 '../fonts/'

src: url('../fonts/icomoon.eot?ico1jp');
src: url('../fonts/icomoon.eot?ico1jp#iefix') format('embedded-opentype'),
url('../fonts/icomoon.ttf?ico1jp') format('truetype'),
url('../fonts/icomoon.woff?ico1jp') format('woff'),
url('../fonts/icomoon.svg?ico1jp#icomoon') format('svg');

 

接著一樣在 fnotTest.vue 加入 icon

<div class="somecode">
    <i class="icon-pig"></i>PIG
</div>

 

頁面有正常顯示的話就是成功了。

 

另外這邊有個小技巧可以判斷到底是沒有引入成功還是只是 class 錯誤:

如果是根本沒有引入成功的話,會直接空白、不顯示任何東西,

如果是引入了,但是 class 有錯誤的話用 F12 或者 ctrl + shift + C去遮 (chrome) 會得到 content:'\XXXX'

而且原本應該出現圖片的地方會是一個方框。

 

字型的部分大致就是以上這樣子了。
 
 

參考資料
網設必備《IcoMoon》icon轉Font整合平台要多少下載多少