發表文章

目前顯示的是 7月, 2018的文章

還在用 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 的當下,網頁的載入當然是越快越好,但開發者也有時程和維護性的考量,所以開發的便