什么是 Canvas?
HTML5 的 canvas 元素使用 JavaScript 在网页上绘制图像。
画布是一个矩形区域,您可以控制其每一像素。
canvas 拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。
什么是SVG?
- SVG 指可伸缩矢量图形 (Scalable Vector Graphics)
- SVG 用于定义用于网络的基于矢量的图形
- SVG 使用 XML 格式定义图形
- SVG 图像在放大或改变尺寸的情况下其图形质量不会有损失
- SVG 是万维网联盟的标准
SVG 的优势
与其他图像格式相比(比如 JPEG 和 GIF),使用 SVG 的优势在于:
SVG
SVG 是一种使用 XML 描述 2D 图形的语言。
SVG 基于 XML,这意味着 SVG DOM 中的每个元素都是可用的。您可以为某个元素附加 JavaScript 事件处理器。
在 SVG 中,每个被绘制的图形均被视为对象。如果 SVG 对象的属性发生变化,那么浏览器能够自动重现图形。
Canvas
Canvas 通过 JavaScript 来绘制 2D 图形。
Canvas 是逐像素进行渲染的。
在 canvas 中,一旦图形被绘制完成,它就不会继续得到浏览器的关注。如果其位置发生变化,那么整个场景也需要重新绘制,包括任何或许已被图形覆盖的对象。
两者比较一览
Svg |
---|
使用场景举例
- svg 1.静态图像 2.高保真文档(用于展示和打印)
- canvas 1.处理视频 2.复杂场景、实时复杂数学动画 3.基于图像位置的快速计算处理
图表和图形
svg和canvas都可以表现图表(如柱状图,散点图,饼图等等),在选择开源的第三方库绘图的时候应该要注意根据使用场景来选择
以下情况使用svg为佳:
- 数据源是或者类似xml(svg)文档
- 需要用户交互
- 使用到css就可以满足大部分样式需求
但是如果需要更高的速度, 那么需要使用canvas:
- 地图交互: 查找路径
- 复杂工程流程图
- 网页游戏
Canvas和SVG的不同:
Canvas
SVG
在HTML5中的直接使用
用法
标签