SVG 座標系統

在開始學習如何繪圖之前,我們先來看一下 SVG 的座標系統。與很多計算機繪圖所使用的座標系統一樣,SVG 也使用了網格座標系統。這種座標和我們以前在數學中學過的座標有些不同。

數學中的座標是由 x 軸(水平橫向延伸)和 y 軸(垂直縱向延伸)交織組成,交點被稱爲座標原點 (0,0) 。原點沿 x 軸向右爲正值,反之爲負值,沿 y 軸向上爲正值,反之爲負值。

而 SVG 網格座標系統的特點如下所示:

  • 以左上角爲座標系的原點,即 (0,0)
  • 橫向延伸爲 X 軸正方向, x 座標逐漸增大。縱向爲 Y 軸正方向,y 座標逐漸增大。
  • 座標以像素 px 爲單位。

座標系統單位

SVG 座標系中對應的值可以指定單位,也可以不指定單位,如果不指定單位則默認單位爲 px

下面是 SVG 中支持的長度單位,包含了常見的 CSS 單位:

單位 描述
px 像素,相對於屏幕分辨率
em 相對於父元素的字體大小
ex 字符的高度 x
cm 釐米
mm 毫米
in 英寸
pt 點(1/72 英寸)
pc Picas(1/21英寸)

畫布

SVG 畫布就是用來繪製 SVG 內容的一個區域,這個畫布可以無限延伸,我們可以在這個畫布的任何位置繪製想要的內容。

SVG 視口(ViewPort)

SVG 的渲染都是在一個矩形區域內發生的,這個有限的矩形區域在 SVG 中被稱爲"視口",超出這個視口的圖形將會被裁切並且隱藏。所以視口也就是 SVG 的渲染區域,用戶能看到 SVG 內容的區域。

那麼爲什麼超過視口的元素會被隱藏呢?這是因爲每個 SVG 元素都有一個默認的 overflow: hidden 樣式,所以超過視窗的內容不可見。如果想要讓超出部分變爲可見,可以將 overflow 屬性的值設置爲 visible

示例:

例如我們看下面這個例子:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>SVG學習(9xkd.com)</title>
        <link rel="styleSheet" type="text/css" href="./style.css">
    </head>
    <body>
        <svg>
            <rect width="300" height="300" style="fill:pink;"/>
        </svg>
    </body>
</html>    

上述代碼中,我們繪製了一個寬爲 300px ,高爲 300px 的矩形,矩形的填充的顏色爲粉色。但是因爲我們沒有這個 SVG 的視口寬高,所以視口會默認寬高爲 300px * 150px,所以在瀏覽器中可以看到,矩形的高被隱藏了一半:

除了像上述所說的將 overflow 屬性設置爲 visible,例如:

<svg style="overflow:visible;">
	<rect width="300" height="300" style="fill:pink;"/>
</svg>

我們還可以通過給 <svg> 元素設置 widthheight 屬性來給 SVG 視口設置寬和高。只要給視口設置的寬高大於繪製圖形的寬高,那麼圖形就能夠完整的顯示啦。

其實畫布和視口是兩個比較容易混淆的概念,每當我們創建一個 <svg> 元素時,就相當於創建了一個無窮大的畫布和一個視口。畫布和視口分別對應兩個座標系統,一個爲用戶座標系,一個爲視窗座標系。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章