首頁  >  文章  >  web前端  >  canvas與svg的差別有什麼? canvas和svg的差異比較

canvas與svg的差別有什麼? canvas和svg的差異比較

不言
不言原創
2018-09-15 13:42:318808瀏覽

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提供的新元素,而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最適合具有大型渲染區域的應用程式(例如Google地圖)。
canvas複雜度高會減慢渲染速度(任何過度使用 DOM 的應用都不快)。
canvas不適合遊戲應用程式

svg依賴解析度。
svg不支援事件處理器。
svg弱的文字渲染能力。
svg能夠以 .png 或 .jpg 格式儲存結果圖片。
svg最適合圖像密集的遊戲,其中的許多物件會被頻繁重繪

這篇文章到這裡就結束了,對於canvas和svg的更多知識內容可以參考HTML5開發手冊

以上是canvas與svg的差別有什麼? canvas和svg的差異比較的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn