[筆記] 避免 svg 檔內含 Base64 編碼圖片帶來的顯示問題

章節連結

雖說 SVG 檔可以內含 Base64 編碼的圖片,但會受外部 css 作用在 <svg> 標籤上的寬、高或是移動,進而導致圖片無法顯示在正確位置。建議將 svg 檔轉換成純 svg 的向量圖,才是提昇效能和降低後續維護成本的好方法。
html logo


內容

svg 圖片要能正確顯示,取決於 SVG 內部的 viewBox 屬性,和外部 CSS 對 <svg> 標籤設定的 width 和 height。如果內部 svg 引用的圖片需要在特定尺寸下,如 width=300, height=100 才能正確顯示,但外部的 css 強行將 svg 寬高改變,那就有可能造成位置計算錯誤。

解法有兩種:
1. 將 svg 內的 base64 文字圖片,單獨用 <img> 標籤放入 src 內,格式像是:data:image/png;base64, <……>
2. 將 base64 的文字圖片,轉換成純 svg <path> … 等元素呈現

按讚加入粉絲團