HTML5中Canvas与SVG的画图原理比较


Posted in HTML / CSS onJanuary 16, 2013

canvas 与 SVG都能够使你在浏览器中画图,但它们的基本原理不同。
SVG
SVG是一种在XML中描述二维图形的语言。
SVG是基于XML的,意味着在SVG DOM内每一个元素都是可用的。你可以为每一个元素增加JS事件处理器。
在SVG中,每一个图形被记作一个对象。如果一个SVG对象的属性发生改变,浏览器可以自动重新生成图形。

Canvas
Canvas能够在fly上画2D图形(使用JS)
Canvas能够按照像素重新生成。

在Canvas中,一旦图形完成,就会被浏览器忘记。如果图形位置要发生改变,那么整个屏幕需要重画,包括图形覆盖的对象。

Canvas 和SVG的比较
下表显示了canvas与SVG的主要不同点:

Canvas          SVG
依赖分辨率      独立于分辨率
不支持事件处理器 支持事件处理器
弱文本渲染能力 最适合具有大渲染面积的应用(谷歌地图)
可以保存最终图片为PNG或者JPG 复杂图像,重画变慢(任何使用DOM很多的情况都会变慢)
最适合许多 对象频繁重画的图形游戏        不适合游戏应用
HTML / CSS 相关文章推荐
css3绘制天猫logo实现代码
Nov 06 HTML / CSS
基于css3实现漂亮便签样式
Mar 18 HTML / CSS
使用CSS3中的calc()属性来以算式表达尺寸数值
Jun 06 HTML / CSS
css3 clip实现圆环进度条的示例代码
Feb 07 HTML / CSS
CSS3之2D与3D变换的实现方法
Jan 28 HTML / CSS
CSS3中新增的对文本和字体的设置
Feb 03 HTML / CSS
css3利用transform变形结合事件完成扇形导航
Oct 26 HTML / CSS
Html5 实现微信分享及自定义内容的流程
Aug 20 HTML / CSS
HTML5 CSS3打造相册效果附源码下载
Jun 16 HTML / CSS
基于 HTML5 WebGL 实现的医疗物流系统
Oct 08 HTML / CSS
HTML中meta标签及Keywords
Apr 15 HTML / CSS
使用CSS实现按钮边缘跑马灯动画
May 07 HTML / CSS
html5 svg 中元素点击事件添加方法
Jan 16 #HTML / CSS
html5 Canvas画图教程(11)—使用lineTo/arc/bezierCurveTo画椭圆形
Jan 09 #HTML / CSS
html5 Canvas画图教程(10)—把面拆成线条模拟出圆角矩形
Jan 09 #HTML / CSS
html5 Canvas画图教程(9)—canvas中画出矩形和圆形
Jan 09 #HTML / CSS
html5 Canvas画图教程(8)—canvas里画曲线之bezierCurveTo方法
Jan 09 #HTML / CSS
html5 Canvas画图教程(7)—canvas里画曲线之quadraticCurveTo方法
Jan 09 #HTML / CSS
html5 Canvas画图教程(6)—canvas里画曲线之arcTo方法
Jan 09 #HTML / CSS
You might like
音乐朗读剧《MARS RED》2021年TV动画化决定!
2020/03/06 日漫
PHP 高手之路(三)
2006/10/09 PHP
php中遍历二维数组并以表格的形式输出的方法
2017/01/03 PHP
PHP商品秒杀问题解决方案实例详解【mysql与redis】
2019/07/22 PHP
innerText和innerHTML 一些问题分析
2009/05/18 Javascript
zShowBox 图片放大展示jquery版 兼容性
2011/09/24 Javascript
自定义右键属性覆盖浏览器默认右键行为实现代码
2013/02/02 Javascript
JavaScript中的noscript元素属性位置及作用介绍
2013/04/11 Javascript
js正文内容高亮效果的实现方法
2013/06/30 Javascript
js实现鼠标触发图片抖动效果的方法
2015/02/27 Javascript
jquery表单插件form使用方法详解
2017/01/20 Javascript
arcgis for js栅格图层叠加(Raster Layer)问题
2017/11/22 Javascript
如何实现一个webpack模块解析器
2018/10/24 Javascript
移动端H5页面返回并刷新页面(BFcache)的方法
2018/11/06 Javascript
vue实现form表单与table表格的数据关联功能示例
2019/01/29 Javascript
浅谈KOA2 Restful方式路由初探
2019/03/14 Javascript
Vue中通过vue-router实现命名视图的问题
2020/04/23 Javascript
vue基础知识--axios合并请求和slot
2020/06/04 Javascript
Python 条件判断的缩写方法
2008/09/06 Python
Python标准库之collections包的使用教程
2017/04/27 Python
基于hashlib模块--加密(详解)
2017/06/21 Python
python 判断字符串中是否含有汉字或非汉字的实例
2019/07/15 Python
解决jupyter notebook打不开无反应 浏览器未启动的问题
2020/04/10 Python
巧用CSS3 border实现图片遮罩效果代码
2012/04/09 HTML / CSS
YOINS官网:时尚女装网上购物
2017/03/17 全球购物
英国书籍、CD、DVD和游戏的第一道德零售商:Awesome Books
2020/02/22 全球购物
物业管理公司实习生自我鉴定
2013/09/19 职场文书
电子商务专业学生的自我鉴定
2013/11/28 职场文书
高三上学期学习自我评价
2014/04/23 职场文书
2014年团队工作总结
2014/11/24 职场文书
面试感谢信范文
2015/01/22 职场文书
上课讲话检讨书范文
2015/05/07 职场文书
基石观后感
2015/06/12 职场文书
团支部书记竞选稿
2015/11/21 职场文书
《从现在开始》教学反思
2016/02/16 职场文书
干货干货!2019最新优秀创业计划书
2019/03/21 职场文书