網站 Favicon 使用 SVG 檔的好處

什麼是 favicon?

favicon 是 favorites icon 的縮寫,中文通常稱為頁面圖示(page icon)或網站圖標(website icon);簡單一點來說,就是瀏覽器最上面各分頁會出現的圖案。

favicon
像我這個網站的favicon是位可愛的吸血鬼


favicon 除了可以用傳統的 ico 檔,也可以用 png 檔,甚至可以用 SVG 檔。

為何要特地用 SVG 檔?

用一般圖檔就好了,何必要再創作一個 SVG 檔呢?因為瀏覽器有 dark mode 的存在,這個模式可能會讓網頁的 favicon 看不清楚,這就是我推薦使用 SVG 檔的原因,因為我們可以很輕易地在 SVG 檔中塞 CSS 語法進去調色,別的檔案格式沒有這種能力。看到一看就知道沒去背的白底 icon 會讓我很焦慮,以下為簡單的例子:


<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="64px" height="64px" viewBox="0 0 64 64" enable-background="new 0 0 64 64" xml:space="preserve">
  <style>
    path{fill:#2858aa;}
    @media (prefers-color-scheme: dark) {path{fill: #23A6DE;}}
  </style>
  <path d="example"/>
</svg>

prefers-color-scheme: dark」就是在 dark mode 下呈現的樣貌,寫法跟 media query 一樣。我們可以在括號範圍內設定一個比較亮的顏色(fill: #23A6DE)才不會讓使用者看不清楚。


favicon HTML 設定

在 HTML 的 head標籤裡照這樣設定就可以了,沒必要花時間在考慮各裝置自己的 favicon 寬高:


<link rel="icon" href="/img/favicon.svg" type="image/svg+xml">
<link rel="icon alternate" href="/img/favicon.png" type="image/png" sizes="192x192">
<link rel="shortcut icon" href="/img/favicon.png" sizes="192x192">
<link rel="apple-touch-icon" href="/img/favicon.png" sizes="192x192">
<link rel="icon" href="/img/favicon.ico" sizes="48x48">

SVG 的寬高適度就好,瀏覽器會自動伸縮,但寬高一定要相同。(有一說是除了SVG之外,favicon的寬高要48的倍數。但根據我的實驗,用32和180都可以顯示,連Google SERP都沒問題)

另外,除了 SVG 之外,還用了 png 和 ico 檔的原因是怕瀏覽器不支援,畢竟我也沒辦法控制使用者要用什麼瀏覽器。

svg 的支援度
各主流瀏覽器 favicon 支援 svg 的情況,png 的話連 IE11 都支援。


*Chrome 100 的 svg favicon 看不懂 prefers-color-scheme。

留言

這個網誌中的熱門文章

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

10 steps、「ライブ会場を沸らせる、フロアを沸かす」ミーム動画の作り方 (Viggle AI)

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