SVG Favicon:為什麼更好以及如何實際使用

Favicon.im

事情是這樣的:自從 1999 年以來,我們一直被困在像素化的 ICO 檔案中。二十五年的模糊小圖示。但 SVG favicon?它們真的蠻厲害的——而且大多數開發者仍然沒有在使用。

讓我告訴你為什麼你可能想要切換,更重要的是,如何在不影響舊版瀏覽器使用者的情況下實作。

為什麼 SVG Favicon 真的值得

無限縮放不模糊

還記得為你的 favicon 建立五種不同的 PNG 尺寸嗎?16x16、32x32、48x48... 很快就膩了。用 SVG,你只需建立一個檔案。就這樣。無論是在瀏覽器分頁中顯示 16 像素還是在 PWA 啟動畫面中顯示 512 像素,它都看起來清晰銳利。

一個典型的 SVG favicon 大約 300-800 bytes。相比之下,一個 PNG favicon 套件大約 2-5 KB。這是 85-95% 的大小減少。絕對數字上不算大,但當你在做最佳化時,每個 byte 都很重要。

深色模式就是這麼簡單

這是殺手級功能。使用 SVG favicon,你可以直接在檔案中嵌入 CSS 媒體查詢。當使用者切換到深色模式時,你的 favicon 會自動適應。

實際看起來像這樣:

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
  <style>
    path { fill: #1a1a1a; }
    @media (prefers-color-scheme: dark) {
      path { fill: #ffffff; }
    }
  </style>
  <path d="M16 4L4 28h24L16 4z"/>
</svg>

這是一個簡單的三角形,在淺色背景上是深色,在深色背景上是淺色。不需要 JavaScript。不需要伺服器端偵測。它就是能用。

CSS 樣式和動畫

由於 SVG 基本上是帶有樣式的 XML,你可以做點陣格式無法做到的事情:

  • 懸停時改變顏色(在支援的情境中)
  • 加入微妙的動畫
  • 使用 CSS 變數進行主題化
  • 用 JavaScript 修改樣式

我不建議在 favicon 中瘋狂使用動畫——那有點煩人。但有這個選項是不錯的。

瀏覽器支援現況

讓我們坦白說:SVG favicon 的支援並不完美。以下是 2025 年的現況:

完整支援:

  • Chrome 80+(桌面和 Android)
  • Firefox 41+
  • Edge 80+
  • Opera 44+
  • Samsung Internet 13+

不支援:

  • Safari(桌面和 iOS 都不支援)
  • Internet Explorer
  • Android Browser

Safari 是大問題。Apple 的瀏覽器仍然不支援 SVG favicon,這意味著大約 20% 的使用者看不到你的 SVG 圖示。你需要備用方案。

正確實作 SVG Favicon

帶備用方案的基本設定

這是涵蓋所有人的標記:

<head>
  <!-- 非常舊的瀏覽器的 ICO 備用 -->
  <link rel="icon" href="/favicon.ico" sizes="32x32">

  <!-- 現代瀏覽器的 SVG -->
  <link rel="icon" href="/favicon.svg" type="image/svg+xml">

  <!-- Safari 的 PNG 備用 -->
  <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">

  <!-- Apple Touch Icon(Safari 不會使用你的 SVG) -->
  <link rel="apple-touch-icon" href="/apple-touch-icon.png">
</head>

順序很重要。瀏覽器按順序解析這些,使用它們支援的最後一個。現代瀏覽器會抓 SVG,Safari 會用 PNG,古老的瀏覽器會退回使用 ICO。

專業技巧:防止 Chrome 使用 ICO

Chrome 有時即使有 SVG 也會下載 ICO。在你的 ICO link 加上 sizes="32x32"——這告訴 Chrome 這個 ICO 只用於特定尺寸,所以它會偏好可縮放的 SVG。

建立深色模式自適應 SVG

這是一個更完整的範例:

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
  <style>
    .icon-bg { fill: #ffffff; }
    .icon-fg { fill: #000000; }

    @media (prefers-color-scheme: dark) {
      .icon-bg { fill: #1a1a1a; }
      .icon-fg { fill: #f0f0f0; }
    }
  </style>

  <circle class="icon-bg" cx="16" cy="16" r="15"/>
  <text class="icon-fg" x="16" y="21"
        text-anchor="middle"
        font-family="system-ui"
        font-weight="bold"
        font-size="18">F</text>
</svg>

這會建立一個圓形圖示,帶有一個根據系統偏好反轉顏色的字母。

檔案大小現實檢查

人們有時聲稱 SVG 總是更小。這不完全正確。實際情況是:

  • 簡單幾何圖示:SVG 勝出,通常差距很大
  • 複雜插圖:PNG 實際上可能更小
  • 照片或詳細圖形:不要用這些當 favicon

對於典型的 logo 風格 favicon(形狀、字母、簡單圖形),SVG 在檔案大小上幾乎總是更好的選擇。

最佳化技巧

在部署你的 SVG favicon 之前,用 SVGOMG 或類似的最佳化工具處理它。像 Illustrator 和 Figma 這樣的匯出工具會加入很多垃圾——中繼資料、編輯器註解、座標中不必要的精確度。

好的最佳化可以將你的 SVG 大小減少 50-70%。

另外,保持設計簡單。複雜的漸層、濾鏡和數百個路徑不只會增加檔案大小——還可能造成渲染延遲。

關於主題偵測的一件事

SVG 內部的 prefers-color-scheme 媒體查詢遵循作業系統偏好,而不是瀏覽器的主題設定。如果有人使用深色模式的 macOS 但瀏覽器設定為淺色主題,favicon 仍然會是深色模式風格。

這與大多數網站處理深色模式的方式一致,但值得知道。

你應該切換到 SVG 嗎?

如果你目前的 favicon 是簡單的形狀或字母標誌,SVG 可能值得。你會獲得:

  • 一個檔案代替多個
  • 自動深色模式支援
  • 更小的總檔案大小
  • 面向未來的可縮放性

如果你的 favicon 是詳細的插圖或你有很多 Safari 使用者,堅持用 PNG 作為主要格式。

大多數網站的最佳方法?兩者都用。支援的瀏覽器用 SVG,不支援的用 PNG 備用。設定只需多花 5 分鐘,涵蓋 100% 的使用者。

快速實作清單

  • [ ] 建立你的 SVG favicon(保持簡單)
  • [ ] 如需要加入深色模式媒體查詢
  • [ ] 用 SVGOMG 最佳化
  • [ ] 建立 PNG 備用(最少 32x32)
  • [ ] 建立 apple-touch-icon.png(180x180)
  • [ ] 加入帶備用順序的適當 link 標籤
  • [ ] 在 Chrome、Firefox 和 Safari 中測試

就這樣了。SVG favicon 並不複雜——只是沒被充分使用。在你的下一個專案中試試看。

參考資料

  1. Can I Use - SVG Favicons - SVG favicon 支援的瀏覽器相容性資料
  2. Building an Adaptive Favicon - web.dev - Google 的自適應 favicon 建立指南
  3. SVG Favicons and All the Fun Things We Can Do With Them - CSS-Tricks - SVG favicon 功能的全面探索
  4. How to Favicon in 2025 - Evil Martians - 實用的現代 favicon 實作指南
檢查您的 Favicon

使用 favicon.im 快速檢查您的 favicon 是否配置正確。我們的免費工具確保您網站的 favicon 在所有瀏覽器和裝置上正確顯示。

免費公共服務

Favicon.im 是一個完全免費的公共服務,受到全球開發者的信賴。

15M+
每月 Favicon 請求數
100%
永久免費