還在用 Font Awesome 4? 趕緊放棄載入字體的 icon font

行動裝置預設阻擋 icon font 勢必會成為趨勢,除非你也有處理未載入時的畫面呈現,或有沒有icon對使用者的 UX 都沒有影響(這裡要捫心自問,既然有沒有 icon 都可以,為何還要放icon),否則只會有更多 browser 跟進如 firefox focus 這樣的瀏覽器或套件出現,就跟使用者主動安裝 adblock 是相同的道理。


Font Awesome 的升級

若你是使用 Font Awesome 且沒有時間處理這個問題,官方剛好有出一個快速解套的解決方案,讓開發者無痛從 4 升級到 5:Upgrading from Version 4

但這必需多載入 v4-shims.css 和 v4-shims.js,對使用者而言就是多兩個 request ,所以有時間的話,還是全面改寫成正常的第5版會比較好,也就是不需要用CSS載入字體檔,只有JavaScript的版本(用JS產生SVG)。


就算第4版現在大部分的情況都能正常顯示,但由於 CSS 檔案肥大(因為包含字體檔),加上沒有 font-display: swap; 的語法,通常都會拖慢載入速度。所以,放棄需要載入字體檔的icon,投入 svg 的懷抱吧!


造成排版位移

網站若有使用其它字體 (例如 Google font) 的人都知道,就算有 font-display:swap 解決載入前後文字閃爍的情況,還是無法解決載入前後字體位移的問題,因為每種字體的大小與定位都有些微的不同。這個影響雖然不大,Google 強調的 CLS 看似也不把它當作問題,但這個問題確實存在。



還能更好

而前面提到直接貼<svg>的方式,難道第5版還不夠好嗎?

在 chrome 的 Lightinghouse 測試中,有無載入第5版的 Font Awesome 速度分數最多可以差到20分,Time to Interactive (TTI)更可以相差到 8 秒之多,若又選用有載入字體的CSS,分數又會差更多。所以才又提了直接放<svg>的方法,既少了一個 request,又不用載入 Font Awesome,TTI 也從 12 秒降到 4 秒,但開發上會麻煩很多。


在考慮使用者體驗和 SEO 的當下,網頁的載入當然是越快越好,但開發者也有時程和維護性的考量,所以開發的便利性與載入速度的取捨變成開發時必定考慮的問題,但是至少,不要再載入 icon 字體檔案了。



留言

這個網誌中的熱門文章

用CSS的 min() max() 與vw,設計有極限值的RWD響應式文字

運用資料層 dataLayer.push 建立 GTM 自訂事件

Google Search Console 網頁發現方式多了「參照網頁」