跳轉到

建立 2026-09-14 更新 2026-09-14

座標系統與 viewBox

SVG 的原點在左上角x 往右、y 往下增加(和數學課的笛卡兒座標相反)。搞錯這個方向,文字與箭頭會整張飛掉。

width / height 是元素在頁面上佔多大;viewBox 是「內部座標系統」的範圍。兩者分開,圖才能在不同尺寸下保持比例。

最小畫布

<svg width="300" height="160" viewBox="0 0 300 160"
     xmlns="http://www.w3.org/2000/svg">
  <rect x="20" y="20" width="120" height="80" fill="#4051b5"/>
  <circle cx="220" cy="80" r="40" fill="#e25555"/>
</svg>

viewBox="minX minY width height":這裡從 (0, 0) 開始,內部寬 300、高 160,剛好對上外框。

為什麼需要 viewBox

同一個 viewBox 可以塞進不同的外框尺寸,圖會一起縮放、線條仍是向量:

<svg width="150" height="80" viewBox="0 0 300 160">…</svg>
<svg width="100%" viewBox="0 0 300 160">…</svg>

教材圖建議固定一個內部座標(例如 0 0 600 400),用 width="100%" 讓它隨欄寬縮放。標題、直排文字的 x / y 都用這套內部數字,之後改外框不必重算。

比例對不齊時

外框比例和 viewBox 不同時,由 preserveAspectRatio 決定怎麼放:

行為
xMidYMid meet(預設) 完整顯示、置中、可能留白
xMidYMid slice 填滿外框、多餘部分被裁
none 拉扯變形,通常不要用

只寫 width/height、不寫 viewBox

圖可以顯示,但改外框大小時內部座標不會跟著對應,響應式會很難做。教材與圖示請一律寫 viewBox

進一步學習