SVG 入門——理解viewport,viewbox,preserveAspectRatio

來源:互聯網
上載者:User

標籤:設定   輔助   技術分享   img   理論知識   div   代碼產生   預設   文法   

工欲善其事必先利其器,沒有真正搞懂SVG裡的viewport,viewbox, preserveAspectRatio這三個屬性,就很容易遇到坑,最近寫項目用到svg這三個屬性被我一眼就略過 ,後來發現自己並沒有理解透,導致寫項目產生了奇怪的坑,後面解決了,就是原理沒通透,趁著大周末,來一波整理吧

一、這些理論知識必不可少

1.viewport

<svg width="400" height="200"></svg>

上面svg中定義的是一個寬度為400 高度為200 的視口,也就是viewport,我們都知道,SVG標籤裡接下去嵌套的就是SVG的圖形曲線等的代碼了,這個viewport就是管SVG裡面的元素能顯示的在多大的一個面板中的意思,拿PS來理解,就是PS中的一個畫板的大小,畫出來的東西,就只能在這麼大的畫板裡顯示,超出了就看不到

  比如我有這樣的一個畫板

然後我把藍色方塊往下挪

因為我就設定了200高度的viewport,往下挪後藍色方塊就有一部分沒顯示出來了

  2.viewbox 

  這個是重頭戲哇,注意啦,敲黑板!

viewbox="x, y, width, height"
/*
  x:左上方開始的橫座標點
  y:左上方往下的縱座標點
  width: viewbox的寬度
  height: viewbox的高度
*/

以上是文法,下面是上一個執行個體

<svg width="400" heigh="200" viewbox="0 0 200 200">     <rect x="0" y="0" width="10" height="10">        </svg>

這段代碼會有什麼效果呢?實際上viewbox是這樣處理的

  ①viewbox="0 0 200 200 "是在寬度為400,高度為200的viewport畫板裡,從座標點(0,0)作為viewbox的左上方點,然後再圈出一戈寬度為200 高度為200的viewbox

  ②然後把viewbox中的截屏內容在viewport中顯示出來,預設保持縱橫比,下面

  還沒設定viewbox之前

  

 

設定了viewbox

  

然後將這個viewbox進行鋪滿viewport,上面的我是用PS話的啊,沒注意大小 - =

  下面是代碼產生的SVG

  橙色是我畫的輔助線,原來位置的,紅色是加了viewbox後的效果,SVG的viewbox預設是xMid Ymid meet

 

  待更,還有一個屬性,以及平時寫項目的心得總結,今天先寫到這兒~

 

SVG 入門——理解viewport,viewbox,preserveAspectRatio

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.