canvas與svg都是可以在瀏覽器上創建圖形,因此,在html5中感覺canvas和svg很相似,但是實際上canvas與svg有着根本的區別。下面php中文網通過比較canvas和svg之間的不同來給大家總結了關於canvas與svg的區別。一起來看一看吧。
在說canvas與svg的區別之前,我們先來看一看canvas和svg是什么?
svg是什么?
SVG 指可伸縮矢量圖形 (Scalable Vector Graphics)。
SVG 用來定義用於網絡的基於矢量的圖形。
SVG 使用 XML 格式定義圖形。
SVG 圖像在放大或改變尺寸的情況下其圖形質量不會有所損失。
SVG 是萬維網聯盟的標准。
SVG 與諸如 DOM 和 XSL 之類的 W3C 標准是一個整體。
canvas是什么?
HTML5 的 canvas 元素使用 JavaScript 在網頁上繪制圖像。畫布是一個矩形區域,您可以控制其每一像素。canvas 擁有多種繪制路徑、矩形、圓形、字符以及添加圖像的方法。
知道了svg和canvas是什么之后,我們就來比較一下canvas和svg。
canvas和svg的區別比較:
首先我們從時間上看canvas與svg的區別:
canvas是html5提供的新元素<canvas>,而svg存在的歷史要比canvas久遠,已經有十幾年了。
svg並不是html5專有的標簽,最初svg是用xml技術(超文本擴展語言,可以自定義標簽或屬性)描述二維圖形的語言。
其次我們從功能上看canvas與svg的區別:
SVG 是一種使用 XML 描述 2D 圖形的語言。
SVG 基於 XML,這意味着 SVG DOM 中的每個元素都是可用的。您可以為某個元素附加 JavaScript 事件處理器。
在 SVG 中,每個被繪制的圖形均被視為對象。如果 SVG 對象的屬性發生變化,那么瀏覽器能夠自動重現圖形。
Canvas 通過 JavaScript 來繪制 2D 圖形。
Canvas 是逐像素進行渲染的。
在 canvas 中,一旦圖形被繪制完成,它就不會繼續得到瀏覽器的關注。如果其位置發生變化,那么整個場景也需要重新繪制,包括任何或許已被圖形覆蓋的對象。
最后我們來看canvas與svg技術應用上的比較:
canvas依賴分辨率。
canvas支持事件處理器。
canvas最適合帶有大型渲染區域的應用程序(比如谷歌地圖)。
canvas復雜度高會減慢渲染速度(任何過度使用 DOM 的應用都不快)。
canvas不適合游戲應用。
svg不依賴分辨率。
svg不支持事件處理器。
svg弱的文本渲染能力。
svg能夠以 .png 或 .jpg 格式保存結果圖像。
svg最適合圖像密集型的游戲,其中的許多對象會被頻繁重繪。