Canvas 通过 JS 和 HTML<canvas> 来绘制 2D 图形,能够以 .jpg 或 .png 格式保存图像;
SVG 是基于 XML 来描述二维矢量图形的语言。
主要区别
-
从功能上来看,二者都是用来绘制 2D 图形的,但 Canvas 画的是位图,逐像素进行渲染,放大之后会失真,而 SVG 绘制的矢量图其质量不受缩放影响。
-
SVG 支持分层,可以对单独的标签进行修改,Canvas 修改的话,需要将整个画布重新渲染。
-
SVG 节点过多时,渲染速度会减慢,Canvas 性能更好一些,但写起来更复杂。
-
SVG 支持事件处理器,而 Canvas 不支持。
-
SVG 适合带有大型渲染区域的应用程序,不适合游戏;Canvas 适合图像密集型的游戏,因为其中的很多对象会被频繁的重绘。