Skip to content

SVG和Canvas区别

SVG

SVG是可缩放矢量图形,是基于可扩展标记语言XML描述的2D图形的语言,SVG基于XML就意味着SVG DOM中的每个元素都是可用的,可以为某个元素附加Javascript事件处理器。在 SVG 中,每个被绘制的图形均被视为对象。如果 SVG 对象的属性发生变化,那么浏览器能够自动重现图形。

Canvas

Canvas是画布,通过Javascript来绘制2D图形,是逐像素进行渲染的。其位置发生改变,就会重新进行绘制。

区别

  • SVG不依赖分辨率,放大后不会失真,而Canvas依赖分辨率,放大会导致图形失真
  • SVG支持事件处理器,Canvas不支持事件处理器
  • Canvas渲染文字能力较弱,因为Canvas是按像素来渲染的,
  • Canvas可以保存为png、jpg图像

应用

  • Canvas是画布,绘画出来的图形是位图,渲染性能较高。一般游戏开发和一些比较复杂的图表都是使用Canvas开发的。

  • 而SVG,比较适合做大图,地图,因为放大之后不会失真。