-
Notifications
You must be signed in to change notification settings - Fork 45
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Day26 - SVG和CANVAS的区别? #78
Comments
(1)SVG: 其特点如下:
(2)Canvas: 其特点如下:
注:矢量图,也称为面向对象的图像或绘图图像,在数学上定义为一系列由线连接的点。矢量文件中的图形元素称为对象。每个对象都是一个自成一体的实体,它具有颜色、形状、轮廓、大小和屏幕位置等属性。 |
Canvas 和 SVG 都允许在浏览器中创建图形,但是它们在根本上是不同的。
|
SVG
Canvas
|
|
它们实现功能上相同,可以相互模拟,但在根本上是不同的,其各自特点如下: Canvas
SVG
|
各自定义
|
svg是矢量图,因为不是基于像素,所以可以无限放大也不模糊。svg 是一个个dom元素,所以如果一直渲染复杂的操作会触发重绘重排,影响性能。canvas是位图,基于像素,所以分辨率低会出现模糊。canvas 是一个对象,通过 JavaScript 脚本操作绘图,一帧帧的画,因为 canvas 不进行dom 操作,所以绘制图像密集切换时比svg有优势。但多个canvas可能会占用很大的内存。 |
canvas是什么canvas是H5中新增的标签,官方解释说canvas是一块画布,可以在网页中绘制图像。 svg是什么svg即可缩放矢量图形,什么是矢量图形呢,也就是放大或者缩小不会失真的图形。 svg绘图时,每个图形都是以DOM节点的形式插入到页面中的,我们可以通过js来直接操作这些图形 区别
应用场景Canvas绘制出来的图形是位图具有很好的渲染性能,更适合做数据量大,图像高频率交互的动画,游戏。
|
Canvascanvas是html5提供的新元素,canvas可以看做是一个画布,其绘制出来的图形为标量图,会受到分辨率的限制,也由于Canvas 是逐像素进行渲染的,如果Canvas 图层的位置发生变化,那么整个场景也需要重新绘制,包括任何已被图形覆盖的对象; 特点● 依赖分辨率 SVGsvg的出现要比canvas更早,最初svg是用xml技术描述二维图形的语言; 特点● 不依赖分辨率 |
1、svg绘制出来的每一个图形的元素都是独立的DOM节点,能够方便的绑定事件或用来修改。canvas输出的是一整幅画布; 2、svg输出的图形是矢量图形,后期可以修改参数来自由放大缩小,不会失真和锯齿。而canvas输出标量画布,就像一张图片一样,放大会失真或者锯齿 |
SVGSVG 意为可缩放矢量图形(Scalable Vector Graphics),基于 xml 绘制图形,SVG DOM中的每个元素都可以单独添加事件处理器和属性 canvascanvas 是使用脚本语言(javascript)在画布上动态绘制图形,HTML5提供的 canvas 标签只是一个绘制的容器 两者的区别canvas:
svg:
|
canvascanvas是基于像素进行渲染的,通过javascript进行绘制。所以一旦图形被绘制完成,就不会再得到浏览器的关注,不支持事件绑定。canvas标签本身并没有绘制图像的能力,是通过javascript绘制的。
SVGSVG叫可伸缩的矢量图形,它是基于XML格式的,特点是不管放大多少倍都不会失真。它可以直接插入网页,然后用css和js控制。所以支持事件处理器
|
|
可缩放矢量图形(英语:Scalable Vector Graphics,SVG)是一种基于可扩展标记语言(XML),用于描述二维矢量图形的图形格式。SVG由W3C制定,是一个开放标准。因其是矢量图标,所以不会失真。SVG的最大优势在于便捷的交互性和可操作性
canvas 是 HTML5 新定义的标签,通过使用脚本(通常是 JavaScript)绘制图形。 标签只是图形容器,相当于一个画布,canvas 元素本身是没有绘图能力的。所有的绘制工作必须在 JavaScript 内部完成,相当于使用画笔在画布上画画。Canvas在像素操作方面有着强大的优势
|
canvas 通过 JavaScript 来绘制 2D 图形,canvas 是逐像素进行渲染的。在 canvas 中,一旦图形被绘制完成,它就不会继续得到浏览器的关注。如果其位置发生变化,那么整个场景也需要重新绘制,包括任何或许已被图形覆盖的对象。 特点
SVG 是一种使用 XML 描述 2D 图形的语言。SVG 基于 XML,这意味着 SVG DOM 中的每个元素都是可用的。您可以为某个元素附加 JavaScript 事件处理器。在 SVG 中,每个被绘制的图形均被视为对象。如果 SVG 对象的属性发生变化,那么浏览器能够自动重现图形。 特点
|
svg 是通过 xml 描述的矢量图,不受像素大小的影响,可以任意地进行放大和缩小,常用于地图等复杂度比较高的情况下 canvas 是通过 js 描述的位图,非常依赖像素,在游戏中用的比较多,渲染到浏览器中只有一个带有很多属性的 canvas 标签,一旦有一处需要变动的话,就需要整个 canvas 元素重新渲染 |
Canvas 和 SVG 都允许在浏览器中创建图形,但是它们在根本上是不同的。 SVG SVG 是一种使用 XML 描述 2D 图形的语言。SVG 基于 XML,这意味着 SVG DOM 中的每个元素都是可用的。可以为某个元素附加 JavaScript 事件处理器。在 SVG 中,每个被绘制的图形均被视为对象。如果 SVG 对象的属性发生变化,那么浏览器能够自动重现图形,可以说是矢量图。
Canvas Canvas 通过 JavaScript 来绘制 2D 图形, 是逐像素进行渲染的。在 canvas 中,一旦图形被绘制完成,它就不会继续得到浏览器的关注。如果其位置发生变化,那么整个场景也需要重新绘制,包括任何或许已被图形覆盖的对象。可以说是位图
|
svg
canvas
|
SVG是可伸缩矢量图形,SVG是使用XML来描述二维图形和绘图程序得语言。 |
svg 和 canvas 都是用来做2d可视化的 |
HTML5 提供了 Canvas 和 SVG 两种绘图技术,也是多数 Web 图表库使用的渲染技术。 Canvas 是基于脚本的,通过 JavaScript 指令来动态绘图。 Canvas 提供的绘图能力更底层,适合做到像素级的图形处理,能动态渲染和绘制大数据量的图形。 Canvas 的性能受画布尺寸影响更大, |
canvas 依赖分辨率比较适合交互比较多的场景;svg不依赖分辨率不会失真,合适交互较少的场景。 |
svg 是可伸缩矢量图,所以在放大的情况下其图形质量不会有损失。 |
svg和canvas都是在浏览器中的绘图工具:
|
canvas 在HTML里面的确是有这样一种节点,这种节点占据一块页面区域,称之为画布,在这个画布上要进行任何的绘制都必须通过 JS 来完成,而且画出来的是位图,也就是说,他不会因为这块儿绘图区域的大小缩放而导致浏览器的重新绘制,那么因此他就不会有相应的性能问题。所以,可以通过 canvas 进行大数据量的绘画,正因为如此,它的使用场景会可以允许做像地图,像游戏这样的东西。 而 SVG 的话正相反,它不需要使用 JS 来绘图,他只要用 SVG 类型的节点嵌套去描绘所要绘制的图形,并且,在这些节点上面也可以像其他的普通DOM元素一样去触发事件,而且绘制出来的图片它是矢量图,意味着区域缩放的时候他会动态重新绘制,这两点意味着它的交互性会更好。因此,他会用来做一些小图标,做一些小规模的可视化。 |
The text was updated successfully, but these errors were encountered: