大多數 SVG 圖樣的問題都源自四個檢查點之一——圖磚邊界、視覺權重與控制項數值、目的地環境對 data URL 的政策,或瀏覽器的剪貼簿權限——而識別是哪一個檢查點產生了損壞的結果,就是疑難排解的全部難題。SVG 圖樣產生器提供三個同步的輸出——即時重複預覽、獨立的 SVG 標記,以及帶有 percent-encoded data URL 的 CSS——因此每個症狀都可以追溯到一個特定的檢查點,而不是僅憑一張螢幕截圖來猜測。將圖磚視為一個確定性的物件,然後在它實際呈現的條件下重新檢查,是從損壞的預覽到正常背景的最快路徑。由於產生器會根據相同的輸入重新建構同一個圖磚,因此可以稍後從儲存的設定紀錄重現正常的結果,這使得疑難排解的循環既簡短又可驗證。

how do i troubleshoot a problem when i generate svg pattern
疑難排解 SVG 圖樣產生問題與修復方法

產生的 SVG 圖樣通常哪裡會出錯

大多數失敗的 SVG 圖樣結果可歸入四個類別,而辨識出類別就等於解決了一半的問題。首先,幾何圖形可能實際上在圖磚邊界處沒有對齊,表現為兩塊圖磚相接處出現細微的縫隙或重疊的描邊。其次,圖樣的視覺權重可能會偏離控制項所顯示的數值,特別是在點狀和線狀樣式之間切換時,因為它們對相同數值的解讀方式不同。第三,即使 SVG 本身正確,目的地環境仍可能拒絕接受輸出:嚴格的內容安全政策、會清理內容的電子郵件用戶端,或會移除 data URL 的 CMS。第四,人為端也可能出錯:剪貼簿權限被拒絕、不慎輸入超出支援範圍的值,或是色彩值被輸入框以設計未預期的方式正規化。這些類別各自有不同的第一步動作,因此疑難排解的步驟是在更改任何設定之前,先將症狀歸入正確的類別。

在調整控制項之前先診斷問題

SVG 圖樣產生器會保持三個檢視畫面的同步:重複預覽、獨立 SVG 圖磚,以及 CSS 區塊。當看起來有問題時,最快的診斷方式是透過這三個檢視畫面讀取同一個圖樣,並比較它們各自實際呈現的內容。預覽會顯示圖磚在實際尺寸下的呈現效果,包括邊界上的反鋸齒,這在標記檢視中是看不到的。SVG 檢視會顯示單一圖磚的確切幾何圖形,讓您能確認前景與背景是否皆為六位數小寫的 HEX 值,以及圖磚尺寸是否符合控制項的設定。CSS 檢視會顯示 percent-encoded data URL 與 background size,並揭示字串中是否混入了非標準的輸入。如果三個檢視中有兩個與預期不符,則問題出在輸入;如果三者皆與預期一致但目的地仍然顯示異常,則問題出在目的地。

使用 SVG 圖樣產生器修復問題

  1. 選擇與預期用途相符的圖樣樣式——點陣、格線、對角線或波浪——而不是調整其他樣式直到它看起來接近您想要的效果。
  2. 將圖磚大小設定為介於 8 到 128 像素之間的整數,並將圖形寬度設定為介於 1 到 12 像素之間,請記住這些數值在不同的樣式中有不同的意義。
  3. 將前景與背景選擇為六位數的 HEX 值;產生器會將兩者正規化為小寫,因此輸出結果中出現任何大小寫差異都屬正常。
  4. 請在使用圖樣的實際尺寸下檢查重複預覽,而不是使用預設的縮放等級,因為接縫與權重問題只有在實際尺寸下才會顯現。
  5. 當預覽正確時,請將 CSS 複製用於原型與小型版面;複製獨立的 SVG 標記用於行內使用;或下載 SVG 圖磚作為託管的資產。
  6. 如果目的地拒絕了 CSS 的 data URL,請將 background-image 宣告中的 data URL 替換為已下載圖磚的 URL,並保留 background-color 與 background-size 不變。
  7. 每次變更後,請使用相同的控制項重新建構,以確認輸出與先前正常運作的版本逐位元組相同,這能保護疑難排解紀錄的完整性。

三種輸出格式及其各自的失敗情境

三種輸出格式解決不同的部署問題,且失敗的方式也不同。CSS 輸出會將精確的 SVG 嵌入在 percent-encoded data URL 中,因此不需要額外的圖片請求,這讓原型與小型版面保持自包含;當目的地的內容安全政策、清理機制、電子郵件用戶端或 CMS 阻擋 data: URL 時,這種格式就會失敗,其可見的症狀是背景消失,但控制台不會出現明顯的錯誤訊息。獨立的 SVG 標記是原生向量形式的同一個圖磚,適用於行內使用以及直接讀取 SVG 的工具;當目的地移除或重寫行內 SVG,或圖磚在某個尺寸下會暴露反鋸齒接縫時,這種格式就會失敗。下載的 SVG 圖磚是單一的來源圖磚,而非較大的重複區域,預期會再由 CSS 或繪圖應用程式進行並排;當它被放入 <img> 標籤中而沒有進行重複時,這種格式就會失敗,因為該檔案的大小僅為單一圖磚。選擇與部署相符的格式,而非最容易複製的格式,可以避免大多數這類失敗。

特定失敗情境與各自的解決方式

症狀可能原因如何使用產生器解決
圖磚之間出現可見的細微接縫小數縮放、瀏覽器縮放,或是相對於圖磚過大的描邊寬度將圖形寬度調低至 1–12 範圍的下半段,將圖磚大小調高至 8–128 範圍的上半段,並在最終的 CSS 尺寸與裝置像素比下進行測試
在相同的圖形寬度下,點狀看起來比對角線來得粗對於點狀而言,圖形寬度代表點的半徑;但對於線狀樣式而言,它代表描邊寬度線狀樣式請降低圖形寬度,點狀請提高圖形寬度,並以重複預覽而非控制項數值來判斷結果
目的地網站上的背景消失內容安全政策或清理機制阻擋了 data: URL下載 SVG 圖磚、將其作為許可的資產託管,並將 background-image 中的 data URL 替換為該資產的 URL
複製 CSS 或複製 SVG 回報成功,但貼上內容為空瀏覽器的剪貼簿權限被拒絕,唯讀輸出仍可存取手動選取唯讀輸出並從右鍵選單複製,然後在授予權限後重試剪貼簿按鈕
下載後圖磚無法重複下載的檔案僅是單一來源圖磚,而非較大的重複區域將該圖磚套用為 CSS background-image,並沿用 CSS 輸出中的 background-size,或在繪圖應用程式中將其重複
強烈的前景/背景對比在邊緣處出現條紋圖磚邊界處的反鋸齒,特別是在對角線上將對比逐步降低至發布的無障礙範圍內,或在相同的圖磚大小下測試其他樣式

出貨前驗證前景與背景的配對

色彩對比並非嚴格的產生問題,但它卻是產生後圖樣被退回的最常見原因:一個技術上正確的圖樣,若前景與背景的配對落在發布的對比範圍之外,仍可能在無障礙審查中遭到退件。產生器接受兩個獨立的 HEX 值,因此當圖樣預期作為文字背景時,下一步便是進行獨立的對比檢查。使用色彩對比檢查器對前景與背景配對進行快速的檢查,將能在圖磚進入生產環境之前找出任何問題,並讓您調整顏色而無需重新建構幾何圖形。

在實際生產尺寸下測試修復後的圖樣

大多數產生問題只有在圖樣實際使用的尺寸下才會顯現。在螢幕上看起來無縫的 80 像素圖磚,在高密度顯示器的 320 像素下可能會出現 1 像素的錯位;在 1× 下看起來纖細的描邊寬度,在 2× 下可能會主導整個圖磚。請載入套用修復後 CSS 的目的地頁面,使用開發者工具放大檢查圖磚之間的邊界,並以終端使用者將看到的相同裝置像素比來觀察圖樣。如果現實環境的條件仍然暴露接縫,請記錄產生損壞圖磚的確切控制項以及修復它的控制項,然後將該紀錄與專案一同保存——產生器會根據這些控制項逐位元組地重新建構,因此日後無需重新推導即可重現相同的修復方式。有關 SVG 規範中如何描述拼接圖樣的底層機制,W3C SVG 2 圖樣參考資料是權威來源,而MDN 的 pattern 元素頁面則記載了 CSS 在單一圖磚上進行拼接所依賴的瀏覽器行為。

相關閱讀:疑難排解產生 SVG Blob 時遇到的問題。

相關閱讀:修復產生後看起來錯誤的 CSS 三角形。