# 9.2D
# 1.Canvas和SVG的区别?什么情况下用canvas,什么情况下用svg?
性质:
Canvas:是基于像素的位图图形格式,主要是通过 JS 来绘制
SVG:是基于矢量的绘图技术,放大缩小不会失真
DOM:
Canvas:不使用 DOM 为每个绘制的对象维护一个对象节点,也就是说画完了就不能修改其中的部分了,想要修改的话只能重新绘制
SVG:每个绘制的元素都是 DOM 节点。这意味着你可以使用 JavaScript 和 CSS 样式和事件处理器来修改这些元素。
性能:
Canvas:对于大量的、需要频繁重绘的数据或动画,canvas 可能会有更好的性能。
SVG:对于较小数量的对象,其中对象的位置需要被频繁地动态更新,SVG 可能更为合适。
交互性:
Canvas:没有对象表示,如果要进行交互必须自己编写交互逻辑。
SVG:可以为每个图形元素绑定事件处理器。
使用场景:
Canvas:
高度动态的应用,如游戏。 需要进行像素操作的应用,如图像编辑器。 大量数据、需要频繁重绘的场景,如某些类型的数据可视化。
SVG:
需要与图形元素互动的应用。 描述复杂的界面布局,如图表和图形。 当你需要可缩放的图形,例如地图。 图形的描述可以用为 CSS 和 JS 易于访问的 DOM 结构表示时。 最后,根据具体的需求和应用场景,可能会同时使用 canvas 和 SVG。