將多張小圖標/背景圖拼合成一張大圖,透過 background-position 定位顯示所需區塊,減少 HTTP 請求數。
早期 HTTP/1.1 連線限制(每域名 6 條連線),Sprite 顯著降低請求數,一度成為「專業標配」。但隨著 HTTP/2 多路複用普及、HTTP/3 QUIC、瀏覽器並發連線提升,請求成本大幅降低,Sprite 優勢遞減。
repeat-x/y) → Sprite 破壞平鋪。background-position 重新計算。| 方案 | 原理 | 優勢 | 適用場景 |
|---|---|---|---|
| SVG Sprite / Symbol | <symbol id="icon-x"> + <use xlink:href="#icon-x"> | 向量無損縮放、CSS 可控顏色/大小、單一請求、語意化 | 圖標系統、圖示字體替代 |
| Icon Font (FontAwesome 等) | 字體檔案載入,字符映射圖形 | 縮放不失真、CSS 控色、舊瀏覽器相容 | 純單色圖標、快速原型 |
| HTTP/2 + 獨立圖片 | 多路複用並行下載 | 無拼圖維護、獨立快取、按需載入 | 現代專案、中小型圖標集 |
WebP/AVIF + <picture> | 新一代圖片格式 + 響應式選擇 | 體積極小、品質高、瀏覽器原生支援 | 所有位圖資源 |
| CSS Mask / Clip-path | 單一圖片配合遮罩/裁切顯示不同區塊 | 無需拼圖、動態切換 | 狀態圖標(hover/active/disabled) |
若上述 全為「是」,可考慮 Sprite;否則優先選擇 SVG Symbol + HTTP/2 組合。
技術無好壞,只有「是否適合當下語境」。CSS Sprite 是 HTTP/1 時代的智慧結晶,理解其原理與限制,才能在現代工程中做出正確選擇。