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色彩
Jan 16 HTML / CSS
CSS3 please 跨浏览器的CSS3产生器
Mar 14 HTML / CSS
IE兼容css3圆角的实现代码
Jul 21 HTML / CSS
CSS3毛玻璃效果(blur)有白边问题的解决方法
Nov 15 HTML / CSS
css3给背景图片加颜色遮罩的方法
Nov 05 HTML / CSS
CSS3制作皮卡丘动画壁纸的示例
Nov 02 HTML / CSS
html5 touch事件实现页面上下滑动效果【附代码】
Mar 10 HTML / CSS
html5嵌入内容_动力节点Java学院整理
Jul 07 HTML / CSS
HTML5图片预览实例分享
Jun 04 HTML / CSS
HTML5实现音频和视频嵌入的方法
Aug 22 HTML / CSS
详解如何在登录过期后跳出Ifram框架
Sep 10 HTML / CSS
html中显示特殊符号(附带特殊字符对应表)
Jun 21 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
咖啡知识大全
2021/03/03 新手入门
PHP.MVC的模板标签系统(一)
2006/09/05 PHP
PHP strstr 函数判断字符串是否否存在的实例代码
2013/09/28 PHP
Dwz与thinkphp整合下的数据导出到Excel实例
2014/12/04 PHP
[原创]php token使用与验证示例【测试可用】
2017/08/30 PHP
laravel实现Auth认证,登录、注册后的页面回跳方法
2019/09/30 PHP
javascript学习随笔(使用window和frame)的技巧
2007/03/08 Javascript
Jquery 1.42 checkbox 全选和反选代码
2010/03/27 Javascript
离开页面时检测表单元素是否被修改,提示保存的js代码
2010/08/25 Javascript
JavaScript/jQuery 表单美化插件小结
2012/02/14 Javascript
用js一次改变多个input的readonly属性值的方法
2014/06/11 Javascript
jQuery使用CSS()方法给指定元素同时设置多个样式
2015/03/26 Javascript
js点击返回跳转到指定页面实现过程
2020/08/20 Javascript
jQuery图片渐变特效的简单实现
2016/06/25 Javascript
JS实现数字格式千分位相互转换方法
2016/08/01 Javascript
JavaScript实现实时更新系统时间的实例代码
2017/04/04 Javascript
原生JS写Ajax的请求函数功能
2017/12/22 Javascript
Python入门篇之正则表达式
2014/10/20 Python
使用Python的Scrapy框架编写web爬虫的简单示例
2015/04/17 Python
详解用pyecharts Geo实现动态数据热力图城市找不到问题解决
2019/06/26 Python
对numpy下的轴交换transpose和swapaxes的示例解读
2019/06/26 Python
opencv python 图像轮廓/检测轮廓/绘制轮廓的方法
2019/07/03 Python
keras模型可视化,层可视化及kernel可视化实例
2020/01/24 Python
pycharm激活码快速激活及使用步骤
2020/03/12 Python
Python新手学习函数默认参数设置
2020/06/03 Python
利用css3制作3D样式按钮实现代码
2013/03/18 HTML / CSS
详解使用双缓存解决Canvas clearRect引起的闪屏问题
2019/04/29 HTML / CSS
Html5导航栏吸顶方案原理与对比实现
2020/06/10 HTML / CSS
喜诗官方在线巧克力店:See’s Candies
2017/01/01 全球购物
初中家长评语大全
2014/12/26 职场文书
给客户的感谢信
2015/01/21 职场文书
材料员岗位职责
2015/02/10 职场文书
停水通知
2015/04/16 职场文书
大学生安全教育心得体会
2016/01/15 职场文书
Python数据可视化之基于pyecharts实现的地理图表的绘制
2021/06/10 Python
MySQL 四种连接和多表查询详解
2021/07/16 MySQL