多數 SVG 圖樣錯誤可追溯到四項決策:圖塊尺寸與表面面積不符、形狀寬度在不同樣式下意義不同、顏色寫成產生器不接受的格式,以及選了目的端環境無法提供的輸出格式。在複製任何東西之前先修正這四項,就能跳過多數會困住第一次做圖樣的人的返工,因為只要那些輸入落在範圍內,產生器本身就會產出能正確拼接的確定性幾何。
SVG Pattern Generator 的核心想法是:圖樣是一小塊由 CSS 重複的向量圖塊,而不是包在內部 SVG pattern 元素裡的複雜標記樹。這單一決策改寫了你避免錯誤的方式:你不再除錯 path 指令,而是開始管理四個控制項(樣式、圖塊尺寸、形狀寬度,以及兩種顏色),再加上一個檢查步驟。本指南其餘部分會走過這些決策、逐步工作流程,以及介面無法防範的少數陷阱。

多數 SVG 圖樣錯誤背後的四項決策
在點任何東西之前,圖樣成敗取決於四項輸入。把它們當檢查清單,是維持輸出乾淨最快的方式。
- 圖樣樣式。 圓點、格線、對角線與波浪各自有確定性幾何。格線樣式只畫圖塊的上緣與左緣,讓相鄰複本補成完整格子;對角線樣式放置穿過圖塊邊界的平行線段,讓相鄰複本維持條紋節奏。為表面選錯樣式(例如在緊湊名片上用波浪)是造型錯誤,不是產生器錯誤,但這是第一個該避免的。
- 圖塊尺寸。 圖塊尺寸是兩個方向的重複間隔。支援範圍是從 8 到 128 像素的整數。較小的值在同一面積塞進更多主題,較大的值留下更多空間。超出該範圍,是產生器拒絕輸入、而不是靜默修復的最常見原因。
- 形狀寬度。 形狀寬度是從 1 到 12 像素的整數。對圓點它控制圓的半徑,對格線與對角線它控制筆畫寬度,對波浪它控制曲線的筆畫寬度。因此相同數字不保證觀感上的粗細相同,這是第二常見的錯誤。
- 前景與背景顏色。 兩者都必須是六位數 HEX 值。介面會把它們正規化成小寫,而純產生器會拒絕格式錯誤的顏色與超出範圍的值,而不是靜默修復。貼上具名顏色、三位數簡寫,或 RGBA 字串的作者,會撞上第三常見錯誤。
能預防多數錯誤的產生前決策
兩個規劃步驟,比在工具裡怎麼調都更能減少錯誤。第一,決定最終表面尺寸。在主視覺橫幅上以 64 像素看起來緊湊的圖樣,同樣圖塊尺寸放在側欄會顯得稀疏。第二,決定 CSS 會在哪裡執行。若目的端強制的內容安全政策禁止 data: URI,即使 SVG 本身有效,CSS data URL 仍會被封鎖;這種情況你需要先下載圖塊並當成真正的資產託管,再開始微調顏色。
當圖樣位於內文後方時,可以把產生器搭配 色彩對比檢查,因為在螢幕上看起來醒目的強前景/強背景組合,圖樣放大重複時可能無法通過 WCAG 比值。把對比檢查放進迴圈,能避免顏色選擇成為複製之後仍留下來的錯誤。
逐步產生乾淨圖樣
- 選符合你要的視覺節奏的圖樣樣式:圓點給柔和表面、格線給技術版面、對角線給方向強調、波浪給有機背景。
- 先設定圖塊尺寸(以像素計),以預期最終表面為參照。16 到 64 像素的圖塊,涵蓋多數卡片與徽章用途,且不會留下可見空隙。
- 形狀寬度從低開始(線條樣式大約 2 像素,圓點大約 4 像素),且只在檢查預覽之後再增加,因為以筆畫為基礎與以半徑為基礎的樣式,對同一數字的反應不同。
- 為前景與背景輸入六位數 HEX 值,用小寫,除非介面要求,否則不要加前導井字號。兩種顏色都會自動正規化成小寫。
- 在大約等於圖樣上線時會出現的尺寸下,檢查重複預覽。在那裡判斷節奏,而不是在預設預覽縮放。
- 原型與內嵌用途複製 CSS;需要原始圖塊時複製獨立 SVG 標記;目的端無法接受 data URL 時,下載圖塊自行託管。
看重複預覽,不要看控制項數字
最重要的檢查習慣,是在圖樣會被使用的尺寸下看預覽。控制項是誠實的數字,但觀感取決於圖塊尺寸與形狀寬度的關係、前景與背景的對比,以及渲染瀏覽器裡的反鋸齒行為。用相同數值設定做出的兩種圖樣,可能讀起來粗細完全不同,因為圓點是填滿的形狀,線條是筆畫。反鋸齒是另一個細微接縫的常見來源:小數版面縮放或瀏覽器縮放,即使圖塊幾何在數學上正確,也可能讓一像素筆畫看起來不均。若預覽在目標尺寸下是銳利的,圖塊就會乾淨拼接。若邊界出現條帶,複製前需要微調形狀寬度或改背景顏色。
在真實裝置像素比上測試也很重要。在 1x 清晰的圖塊,在 2x 或 3x 可能失去邊緣定義。若目的端要送到高密度顯示器,請在你本機能渲染的最高比值下檢查預覽,或在向量編輯器開啟下載的圖塊,確認重新縮放後筆畫對齊像素邊界。
在三種輸出格式之間選擇
產生器產出三種同步輸出:即時重複預覽、獨立 SVG 圖塊標記,以及含百分比編碼 SVG data URL 加上對應 background-size 的 CSS。它們不可互換,選錯是第四常見錯誤。用下表把輸出對到目的端。
| 輸出 | 最適合 | 留意 |
|---|---|---|
| 含百分比編碼 data URL 的 CSS | 原型、佔位、徽章、小型裝飾表面、受控的網站主題 | 可能被目的端 CSP、淨化程式、電子郵件客戶端或 CMS 封鎖 |
| 獨立 SVG 標記 | 把圖塊放進既有 SVG 文件或繪圖編輯器 | 重複必須由 CSS、SVG 巢狀或接收端工具處理,不是圖塊本身 |
| 下載的 SVG 圖塊檔 | 當成核准資產託管、封存來源圖塊、印刷工作流程 | 檔案是單一圖塊,不是重複預覽;CSS 仍控制它覆蓋多大面積 |
當 CSS data URL 被封鎖時,下載圖塊,並把宣告裡的 data URL 換成託管資產 URL,維持相同的 background-size,讓重複間隔不變。
錯誤對修正速查
下表依造成失敗的控制項,以及最省事的修正,彙整最常見的失敗。精確數值範圍來自產生器;質性影響是你該預期的。
| 症狀 | 可能原因 | 最省事的修正 |
|---|---|---|
| 上線尺寸下圖樣看起來空 | 圖塊尺寸相對表面面積太大 | 把圖塊尺寸往 8 到 128 像素範圍的下端調低 |
| 相同形狀寬度下,線條看起來比圓點更粗 | 形狀寬度對圓點是半徑,對線條樣式是筆畫寬度 | 從圓點改成格線或對角線時,把形狀寬度大約減半 |
| 一種或兩種顏色被靜默忽略 | 輸入了非 HEX、三位數簡寫或 RGBA 顏色值 | 把兩種顏色改寫成六位數 HEX,然後重新產生 |
| 圖塊相接處可見接縫 | 最終 CSS 尺寸下的反鋸齒或小數縮放 | 在目標尺寸與裝置像素比下測試預覽;把形狀寬度微調一像素 |
| CSS 在沙盒能動,上線卻被剝除 | 目的端 CSP、淨化程式或 CMS 封鎖 data URL | 下載圖塊、當成資產託管,並替換宣告裡的 data URL |
| 剪貼簿複製在某些瀏覽器回報成功,在其他瀏覽器沒有 | 瀏覽器剪貼簿權限被拒 | 手動選取唯讀輸出;此工具讓兩個欄位都可見,而不是宣稱成功 |
內建圖塊不是正確工具時
產生器刻意聚焦,而那種聚焦正是輸出可靠的一部分原因。它不建立攝影紋理、雜訊、格子大小可獨立設定的棋盤、自訂 path 上傳、旋轉、漸層、遮罩、動畫或多層構圖。它也不會把 SVG 壓縮到簡潔確定性標記以外。若設計需要其中任何一項,錯誤不在輸入而在工具選擇,改用外部 SVG 編輯器會省時間。對確實符合四種樣式的工作,這裡描述的圖塊優先做法能讓標記精簡、檔案可攜,且 CSS 能跨現代瀏覽器攜帶。
若要背景閱讀 W3C 如何在 SVG 2 定義拼接圖樣,以及瀏覽器如何記載 pattern 元素,W3C SVG 2 patterns specification 與 MDN SVG pattern element reference 是正確起點。產生器匯出的是當成 CSS 背景圖使用的獨立圖塊,而不是把主題包進內部 SVG pattern 元素,因此視覺重複由 CSS 背景拼接執行,這比較接近 MDN 對純 HTTP 樣式的指引,而不是完整的 W3C paint-server 模型。若之後要從這個圖塊遷移到更複雜的 SVG 管線,請把這個區別放在心上,並把原始產生設定跟著專案保存,讓任何重建都是逐位元組相同。
保存設定,而不只是檔案
因為產生器是確定性的,相同的樣式、圖塊尺寸、形狀寬度、前景與背景,永遠產出相同的 SVG 與 CSS。這讓控制項成為之後重現圖樣最精簡的方式。把這四個值放進 CSS 檔頂部的註解,若你選擇託管資產也一併放上下載檔,未來的你或隊友就能精確重建圖塊。圖樣是圖塊加上重複規則,而重複規則活在 CSS 裡;把兩者都當成值得版本控制的原始碼。
若要更深入了解,見 如何避免字型配對產生器錯誤.
若要更深入了解,見 選對做法來產生 SVG Blob.