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实现简易版的刮刮乐效果
Sep 27 HTML / CSS
详解css3 mask遮罩实现一些特效
Oct 24 HTML / CSS
css3中less实现文字长阴影(long shadow)
Apr 24 HTML / CSS
HTML5里autofocus自动聚焦属性使用介绍
Jun 22 HTML / CSS
html5标记文字_动力节点Java学院整理
Jul 11 HTML / CSS
html5弹跳球示例代码
Jul 23 HTML / CSS
HTML5 Canvas阴影使用方法实例演示
Aug 02 HTML / CSS
Html5 FileReader实现即时上传图片功能实例代码
Sep 01 HTML / CSS
html5中的input新属性range使用记录
Sep 05 HTML / CSS
浅谈html5标签css3的常用样式
Oct 20 HTML / CSS
关于h5中的fetch方法解读(小结)
Nov 15 HTML / CSS
html table呈现个人简历以及单元格宽度失效的问题解决
Jan 22 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
用session做客户验证时的注意事项
2006/10/09 PHP
PHP新手上路(十)
2006/10/09 PHP
PHP 日期时间函数的高级应用技巧
2009/10/10 PHP
JavaScript实现删除电脑的关机键
2016/07/26 PHP
javascript 页面只自动刷新一次
2009/07/10 Javascript
谈谈关于JavaScript 中的 MVC 模式
2013/04/11 Javascript
JavaScript var声明变量背后的原理示例解析
2013/10/12 Javascript
JS根据年月获得当月天数的实现代码
2014/07/03 Javascript
JavaScript实现图片滑动切换的代码示例分享
2016/03/06 Javascript
基于jQuery的网页影音播放器jPlayer的基本使用教程
2016/03/08 Javascript
JavaScript判断页面加载完之后再执行预定函数的技巧
2016/05/17 Javascript
H5图片压缩与上传实例
2017/04/21 Javascript
React组件之间的通信的实例代码
2017/06/27 Javascript
pace.js和NProgress.js两个加载进度插件的一点小总结
2018/01/31 Javascript
微信小程序实现预览图片功能
2020/10/22 Javascript
详解Vue2 添加对scss的支持
2019/01/02 Javascript
vue项目实现设置根据路由高亮对应的菜单项操作
2020/08/06 Javascript
python字符串的方法与操作大全
2018/01/30 Python
Python QQBot库的QQ聊天机器人
2019/06/19 Python
Pycharm简单使用教程(入门小结)
2019/07/04 Python
Python3 合并二叉树的实现
2019/09/30 Python
Python3离线安装Requests模块问题
2019/10/13 Python
python 利用turtle库绘制笑脸和哭脸的例子
2019/11/23 Python
Python2.x与3​​.x版本有哪些区别
2020/07/09 Python
应届大学生求职的自我评价
2013/11/17 职场文书
会计工作心得体会
2014/01/13 职场文书
党章学习思想汇报
2014/01/14 职场文书
给幼儿园老师的表扬信
2014/01/19 职场文书
2014厂务公开实施方案
2014/02/17 职场文书
产品质量承诺范本
2014/03/31 职场文书
气象学专业个人求职信
2014/04/22 职场文书
植物生产学专业求职信
2014/08/08 职场文书
客房服务员岗位职责
2015/02/09 职场文书
2015年教师学期工作总结
2015/04/30 职场文书
交通事故案件代理词
2015/05/23 职场文书
演讲稿之我的初心我的成长
2019/08/12 职场文书