svg和canvas的区别?

362 阅读1分钟

在前端开发中,我们会遇到是用svg,还是用canvas。那他们之间有什么区别,我们比较了一下,得出了以下结论。另外在app开发中,不支持svg,还是用png好一点。

  1. svg 是一种矢量图,而 canvas 依赖于分辨率。所以 svg 放大不会失真,但是 canvas 绘制的图形会失真。
  2. svg 支持事件处理器,而 canvas 不支持事件处理器。
  3. svg 中的文字独立于图像,文字可保留,可编辑和可搜索,canvas 的文本渲染能力弱。
  4. canvas 适合图像密集型的游戏,频繁地重绘图像,svg 绘制的复杂度高时减慢渲染的速度。
  5. canvas 绘制的图形可以多种格式 (jpg、png) 保存图片,但是 svg 绘制的只能以 .svg 格式保存,使用时可以引入 html 文件。
  6. canvas 适合开发游戏,svg 不适合游戏应用。
canvassvg
依赖分辨率不依赖分辨率
不支持事件处理器支持事件处理器
弱的文本渲染能力最适合带有大型渲染区域的应用程序
能够以.png或.jpg格式保存结果图像复杂度高会减慢渲染速度
最适合图像密集型的游戏,其中的许多对象会被频繁重绘不适合游戏应用