canvas与svg的区别有什么?canvas和svg的区别比较

canvas与svg都是可以在浏览器上创建图形,因此,在html5中感觉canvas和svg很相似,但是实际上canvas与svg有着根本的区别。下面php中文网通过比较canvas和svg之间的不同来给大家总结了关于canvas与svg的区别。一起来看一看吧。

在说canvas与svg的区别之前,我们先来看一看canvas和svg是什么?

svg是什么?

SVG 指可伸缩矢量图形 (Scalable Vector Graphics)。
SVG 用来定义用于网络的基于矢量的图形。
SVG 使用 XML 格式定义图形。
SVG 图像在放大或改变尺寸的情况下其图形质量不会有所损失。
SVG 是万维网联盟的标准。
SVG 与诸如 DOM 和 XSL 之类的 W3C 标准是一个整体。

canvas是什么?

HTML5 的 canvas 元素使用 JavaScript 在网页上绘制图像。画布是一个矩形区域,您可以控制其每一像素。canvas 拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。

知道了svg和canvas是什么之后,我们就来比较一下canvas和svg。

canvas和svg的区别比较:

首先我们从时间上看canvas与svg的区别:

canvas是html5提供的新元素<canvas>,而svg存在的历史要比canvas久远,已经有十几年了。

svg并不是html5专有的标签,最初svg是用xml技术(超文本扩展语言,可以自定义标签或属性)描述二维图形的语言。

其次我们从功能上看canvas与svg的区别:

SVG 是一种使用 XML 描述 2D 图形的语言。
SVG 基于 XML,这意味着 SVG DOM 中的每个元素都是可用的。您可以为某个元素附加 JavaScript 事件处理器。
在 SVG 中,每个被绘制的图形均被视为对象。如果 SVG 对象的属性发生变化,那么浏览器能够自动重现图形。

Canvas 通过 JavaScript 来绘制 2D 图形。
Canvas 是逐像素进行渲染的。
在 canvas 中,一旦图形被绘制完成,它就不会继续得到浏览器的关注。如果其位置发生变化,那么整个场景也需要重新绘制,包括任何或许已被图形覆盖的对象。

最后我们来看canvas与svg技术应用上的比较:

canvas不依赖分辨率。
canvas支持事件处理器。
canvas最适合带有大型渲染区域的应用程序(比如谷歌地图)。
canvas复杂度高会减慢渲染速度(任何过度使用 DOM 的应用都不快)。
canvas不适合游戏应用

svg依赖分辨率。
svg不支持事件处理器。
svg弱的文本渲染能力。
svg能够以 .png 或 .jpg 格式保存结果图像。
svg最适合图像密集型的游戏,其中的许多对象会被频繁重绘

本篇文章到这里就结束了,对于canvas和svg的更多知识内容可以参考HTML5开发手册

以上就是canvas与svg的区别有什么?canvas和svg的区别比较的详细内容,更多请关注php中文网其它相关文章!

原文地址:https://www.cnblogs.com/feng9exe/p/12194374.html

时间: 2024-10-07 11:12:24

canvas与svg的区别有什么?canvas和svg的区别比较的相关文章

H5 canvas的 width、height 与style中宽高的区别

Canvas 的width height属性 1.当使用width height属性时,显示正常不会被拉伸:如下 <canvas id="mycanvas" width="300" height="300">浏览器不支持Canvas,请升级或改用其它浏览器!</canvas> <script type="text/javascript"> var canvas = document.getE

SVG开发包, 20 个有用的 SVG 工具,提供更好的图像处理

20 个有用的 SVG 工具,提供更好的图像处理 SVG 现正在 Web 设计领域变得越发流行, 你可以使用 Illustrator 或者 Inkscape 来创建 SVG 图像. 但当进行 Web 设计时,我们还需要做一些优化来使得 SVG 变得更加轻量. 下面介绍的 20 个工具,可以帮助你快速有效的创建 SVG 图像.现有的在线工具已经可以帮助我们进行优化.转换.新建模式等工作. 更详细的介绍,参见:How To Create SVG Animation Using CSS 交互式 SVG

[javascript svg fill stroke stroke-width circle 属性讲解] svg fill stroke stroke-width circle 属性 绘制圆形及引入方式讲解

1 <!DOCTYPE html> 2 <html lang='zh-cn'> 3 <head> 4 <title>Insert you title</title> 5 <meta name='description' content='this is my page'> 6 <meta name='keywords' content='keyword1,keyword2,keyword3'> 7 <meta htt

JQuery之JQuery的版本 JQuery入门 属性获取 JQuery就绪函数 JS文档就绪函数和JQuery文档就绪函数的区别 JS对象和JQuery对象的区别 关于$的使用 多个JS库的冲突解决方案

JQuery的版本 JQuery入门 属性获取 JQuery就绪函数 JS文档就绪函数和JQuery文档就绪函数的区别 JS对象和JQuery对象的区别 关于$的使用 多个JS库的冲突解决方案 JQuery的版本 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>jQuery的版本</title> <

web app与app的区别,即html5与app的区别

公司准备要做一个项目,是p2p配资的app.在网上问了一些人后,发现有的是直接有html5做好后,用软件封装的.之前我学过app的开发,当时Android版本的,知道开发Android app时写的代码.那么问题来了: html5封装的app与原生态app有什么区别呢? html5又和app有什么区别呢? 为什么大型网络公司还是倾向于推广原生态app呢? html5是有跨平台的优势,但是为什么还是不温不火,或者我们仍称之为轻应用app呢? 查找了相关的资料,梳理了一下,发现有如下区别: 1.ht

253 undefined与null的区别,null的使用,严格区别变量类型与数据类型

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>01_相关问题</title> </head> <body> <!-- 1. undefined与null的区别? * undefined代表定义未赋值 * nulll定义并赋值了, 只是值为null 2. 什么时候给变量赋值为

Loading加载小插件,用户可以选择html格式或canvas格式,自定义loading图片,canvas色彩搭配可根据个人喜好

;(function($) { $.Loading = function(options) { //暴漏插件默认值 $.Loading.defaults = { speed: 200, //弹出层淡出速度 bgcolor: 'rgba(0,0,0,.7)', //遮罩层颜色,需要rgba格式,默认黑色0.5透明度 type: "html", //默认html样式,也可以是canvas msg: '正在加载...', //默认加载信息 loadPicNum: 2, //为html时loa

Canvas的width,height 和 样式中Canvas的width,height

控制Canvas的大小,有两种方式: 1:直接设置Canvas标签上的书width,height属性值; 2:通过Css设置Canvas的width,height; 这两种方式,区别是很大的. 1:Canvas默认的画布宽高是300 * 150,当你设置标签的width,height属性值时,控制的是Canvas的元素本身的宽高,和Canvas画布的宽高大小.同时设置定了两个值. 2:而Css设置width,height时,只仅仅控制了Canvas元素自身的宽高,而不会改变Canvas画布大小.

一段画对角线的canvas代码,之前没有写过canvas代码,现在记录下来

<canvas id="other" style="width:320px;height:320px;"></canvas> var otherCanvas=document.getElementById('other'); //获取真实width和height 设置到canvas的width和height var height=otherCanvas.offsetHeight,width=otherCanvas.offsetWidth; o

蜂窝移动网络是什么,它和 Wi-Fi 有什么区别? 蓝牙和无线有什么区别?

蜂窝移动网络是什么,它和 Wi-Fi 有什么区别? 转自知乎用户的一个回答: 原题问的是"数据流量是什么",不知道怎么又被改成"蜂窝移动网络是什么"了.说下个人的理解吧: 蜂窝式移动通信网络一般就是代指采用蜂窝组网结构的公众移动通信网络,从俗称的1G(第一代移动通信网络)到现在的4G都可以算作是蜂窝式移动通信网络.但现实中因为地形以及用户量分布不均.建网/建站的规划.现实站址的选择和各代技术的更新迭代(比如从GSM的异频组网到现在3G和LTE的同频组网)等等种种原因