Canvas
canvas通过javascript来绘制2D图形
canvas是逐像素进行渲染的
在canvas中,一旦图像被绘制完成,它就不会继续得到浏览器的关注,如果其位置发生变化,那么整个场景也需要重新绘制,包括任何或许已被图形覆盖的对象
SVG
SVG是一种使用XML描述2D图形的语言
SVG基于XML,意味着SVG DOM中的每个元素都是可用的,我们可以为某个元素附加javascript事件处理器
在SVG中,每个被绘制的图形均被视为对象,如果SVG对象的属性发生变化,那么浏览器能够自动重现图形
Canvas与SVG作比较
Canvas
1.依赖分辨率
2.不支持事件处理器
3.文本渲染能力弱
4.能够以.png或.jpg格式保存结果图像
5.最合适图像密集型的游戏,其中的许多对象会被频繁的重绘
SVG
1.不依赖分辨率
2.支持事件处理器
3.最适合带有大型渲染区域的应用程序,如谷歌地图
4.过度使用DOM,使其复杂度高,从而会减慢渲染速度
5.不适合游戏应用