CANVAS是html5提供的新元素<canvas>,而svg存在的歷史要比canvas久遠,svg並非html5專有的標籤,最初svg是用xml技術(超文本擴展語言,能夠自定義標籤或屬性)描述二維圖形的語言。在H5中看似canvas與svg很像,可是,他們有巨大的差異。javascript
CANVAShtml
SVGhtml5
比較java
Canvascanvas
SVG瀏覽器
從功能上來講網絡
CANVAS能夠看作是一個畫布。,其繪製出來的圖形爲標量圖,所以,能夠在canvas中引入jpg或png這類格式的圖片,在實際開發中,大型的網絡遊戲都是用canvas畫布作出來的,而且canvas的技術如今已經至關的成熟。另外,咱們喜歡用canvas來作一些統計用的圖表,如柱狀圖曲線圖或餅狀圖等。而svg,所繪製的圖形爲矢量圖,因此其用法上受到了限制。由於只能繪製矢量圖,因此svg中不能引入普通的圖片,由於矢量圖的不會失真的效果,在項目中咱們會用來作一些動態的小圖標。可是因爲其本質爲矢量圖,能夠被無限放大而不會失真,因此就很適合來作地圖。框架
從操做上來講svg
咱們要讓canvas裏面的一個圖片跟隨鼠標事件:canvas.onmouseover=function(){}。而svg支持事件的綁定。另外canvas中咱們繪製圖形一般是經過javascript來實現,svg更多的是經過標籤來來實現,如在svg中繪製正矩形形就要用<rect>,這裏咱們不能用屬性style="width:XXX;height:XXX;"來定義。spa