CSS 使用 data URL 產生 SVG 圖樣,因為它會將完整的 SVG 圖塊直接嵌入樣式表中,避免另行要求圖片檔案。這是匯出方式的選擇,而非 SVG 圖樣本身的要求。
這種方法適用於原型設計、卡片、徽章、預留位置及受控的裝飾性介面,因為不需要上傳素材或依賴託管的圖片。預覽比素材本身大:它會顯示一個來源圖塊在整個介面上重複,而獨立標記與下載內容僅包含精簡的圖塊。可見的重複效果由 CSS 產生。

產生的 data URL 實際包含哪些內容
data URL(也稱為 data URI)會將內容承載於 URL 字串中。在這裡,產生的 background-image 值包含百分比編碼後的完整 SVG。該編碼內容正是獨立 SVG 輸出中顯示的精確圖塊,而非另附或近似的版本。
產生的 CSS 包含三個相關的宣告。background-color 提供純色背景,background-image 包含經編碼的 SVG 圖塊,而 background-size 則符合所選正方形圖塊的尺寸。百分比編碼可讓 SVG 分隔符號與 HEX 色碼值保留在 url(...) 內,而不會與 CSS 或 URL 語法衝突。
此實作並未以內部 SVG 圖樣元素包裝母題。W3C SVG 2 圖樣模型與MDN 的 SVG pattern 元素文件描述的是在 SVG 文件內定義的圖樣。產生器實際上會匯出一般的 SVG 圖塊,再使用 CSS 背景平鋪來建立較大的重複區域。
| 產生的輸出 | 包含的內容 | 實用目的 |
|---|---|---|
| 即時預覽 | 在較大介面上重複的來源圖塊 | 檢查外觀、密度、對比及可見接縫 |
| 獨立 SVG 標記 | 一個具有明確尺寸、viewBox、背景矩形及母題的正方形圖塊 | 檢視、儲存或手動納入來源 SVG |
| CSS | 背景色彩、background-image 中經百分比編碼的圖塊,以及相符的 background-size | 直接將圖樣套用為 CSS 背景 |
| 下載的 SVG 圖塊 | 與標記欄位中顯示的同一個單一來源圖塊 | 當 data URL 受到限制時,作為已核准的素材使用 |
產生並檢視來源圖塊
- 開啟SVG 圖樣產生器,選擇圓點、格線、對角線或波浪。將圖塊尺寸設為 8 至 128 像素的整數,並將形狀寬度設為 1 至 12 像素的值。輸入前景與背景色彩,使用六位數的 HEX 值;產生器會將這些色彩正規化為小寫。
- 以圖樣預計使用的近似尺寸檢視重複預覽。圖塊尺寸會控制水平與垂直方向的重複間隔,因此較小的圖塊可在相同區域中容納更多母題,而較大的圖塊則會留下更多視覺空間。
- 請以視覺方式比較形狀寬度控制項,不要假設相同數值就具有相同的視覺重量。對圓點而言,形狀寬度會改變圓形半徑;對線條樣式而言,則會改變筆畫寬度。強烈的背景與前景對比可能會讓這些差異特別明顯。
- 選擇適合目標用途的輸出。複製 CSS 以取得現成的背景宣告,複製獨立 SVG 以取得來源標記,或下載 SVG 圖塊以進行以素材為基礎的工作流程。Copy CSS 與 Copy SVG 動作會分別要求剪貼簿權限。複製成功時會指出格式,而權限遭拒時,唯讀輸出仍會保持可見,以便手動選取。
- 記錄所選的樣式、圖塊尺寸、形狀寬度與色彩。使用完全相同的控制項重新建立時,會產生逐位元組完全相同的 SVG 與 CSS 輸出,讓已部署的圖樣更容易重現。
將產生的 CSS 套用至 CSS 背景
- 開啟 Copy CSS 輸出並複製完整宣告。其結構如下:.pattern { background-color: <background HEX>; background-image: url("data:image/svg+xml,<percent-encoded generated SVG>"); background-size: <tile size>px <tile size>px; }。請使用工具產生的確切值,而非預留位置。
- 將產生的宣告貼入目標元素的規則中。請保持經編碼的 background-image 完整;將原始 SVG 標籤手動插入 URL 可能會破壞宣告。
- 若希望部署結果與產生的預覽相符,請保留相符的 background-size。CSS 背景圖片預設會在水平與垂直方向重複,因此小型 SVG 圖塊可覆蓋元素,而不必包含大型預覽的副本。
- 儲存樣式表,並在預定使用的瀏覽器中載入頁面。以最終 CSS 尺寸檢查圖樣,包括元素周圍的區域及其後方的任何不同背景色彩。
- 如果圖片缺失,請先檢查目標位置的內容安全政策(Content Security Policy)、清理工具或發布工作流程,再變更 SVG。data URL 遭封鎖是政策問題,並非圖塊幾何圖形產生失敗的證據。
當目標位置封鎖 data URL 時予以取代
目標位置的內容安全政策、清理工具、電子郵件用戶端或 CMS 可能拒絕 data URL。產生器無法覆寫這些限制。遇到這種情況時,支援的替代方法是將下載的圖塊作為一般且已核准的素材使用,而不是嘗試強制通過編碼後的 URL。
| 方法 | 目標位置需要哪些項目 | 主要考量 |
|---|---|---|
| 內嵌 data URL | 包含完整產生 CSS 的樣式表 | 不需要另行要求圖片,但目標位置的規則可能會封鎖它 |
| 已核准的素材 URL | 下載的圖塊、允許的託管位置及其最終 URL | 適用於禁止 data URL 的情況 |
| 獨立 SVG 標記 | 可接受 SVG 標記的應用程式 | 應用程式必須定義如何重複或放置圖塊 |
- 選擇 Download SVG Tile。儲存的檔案是精簡的來源圖塊,而非預覽中顯示的大型重複區域。
- 從目標位置核准的素材位置提供該圖塊,例如網站既有的靜態素材工作流程。
- 只將 background-image: url(...) 內的 data URL 換成已核准的素材 URL。保留產生的 background-color 與 background-size。
- 再次載入最終頁面或訊息,並確認目標位置實際渲染規則下的重複效果。如果 CMS 或電子郵件用戶端沒有經核准的背景素材工作流程,產生器也無法提供。
以最終渲染尺寸檢查重複效果
圖塊幾何圖形是具決定性的。圓點會在正方形圖塊中心放置一個圓形。格線會繪製上邊緣與左邊緣,讓相鄰副本完成點陣,且不會產生雙倍寬度的內部線條。對角圖樣使用跨越圖塊邊界的平行線段,而波浪則使用二次曲線及其平滑的二次延續曲線。
這些建構規則能讓相鄰副本在幾何上相容,但無法保證每個渲染像素看起來都完全相同。部署前請檢視以下項目:
- 以最終顯示尺寸及裝置像素比測試 CSS。即時預覽是向量渲染,而非最終瀏覽器輸出的螢幕截圖。
- 檢查瀏覽器縮放與小數版面縮放;這些因素可能會使細線或單像素筆畫看起來不均勻。
- 在強烈色彩對比下比較圖樣,因為反鋸齒差異與過重的筆畫會更容易察覺。
- 仔細檢視對角邊界。即使來源幾何圖形相同,不同的 SVG 點陣化工具仍可能產生不同的邊緣像素。
較大的筆畫寬度也可能主宰小型圖塊。幾何圖形、反鋸齒、縮放及最終渲染環境都會影響結果,因此視覺檢視比假設有效的 SVG 宣告在所有地方都完美呈現更可靠。
瞭解產生器的實用限制
產生器專注於以支援的樣式製作小型向量圖塊。它無法建立 photographic 紋理、雜訊、各儲存格可獨立調整尺寸的棋盤格、自訂路徑上傳、旋轉、漸層、遮罩、動畫或多層組合。它也不會進一步精簡 SVG,只會保留簡潔且具決定性的標記。它不保證印刷套印、紋理隨機性、感知一致性、無障礙功能,亦不保證在不同方式點陣化 SVG 的軟體中產生相同結果。對於支援的裝飾性背景,data URL 是一種精簡的傳遞格式,但仍須進行最終視覺測試與目標位置政策檢查。