首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >HTML5帆布与SVG与div?

HTML5帆布与SVG与div?

提问于 2017-12-26 03:33:50
回答 2关注 0查看 978

在动态创建元素并能够移动它们的最佳方法是什么?例如,假设我想创建一个矩形,圆形和多边形,然后选择这些对象并移动它们。

我知道HTML5提供了三个可以实现这一点的元素:svg,canvas和div。对于我想要做的,哪一个元素将会提供最好的性能?

为了比较这些方法,我想创建三个视觉相同的网页,每个页面都有一个页眉,页脚,小部件和文本内容。第一页中的小部件将完全用canvas元素创建,第二个完全用svg元素创建,第三个用纯div元素HTML和CSS创建。

回答 2

梦飞翔758

发布于 2017-12-26 03:40:09

HTML5 Canvas只是一个位图的绘图表面。你设置绘画(用颜色和线条的粗细来说),绘制这个东西,然后画布不知道这个东西:它不知道它在哪里或者你刚画出来的是什么,它是只是像素。如果你想绘制矩形,让它们四处移动或者可以选择,那么你必须从头开始编写所有的代码,包括记住你画的代码。

另一方面,SVG必须保持对呈现的每个对象的引用。您创建的每个SVG / VML元素都是DOM中的一个真实元素。默认情况下,这可以让您更好地跟踪所创建的元素,并且默认情况下更容易处理像鼠标事件这样的事情,但是当存在大量对象时会显着减慢,那些SVG DOM引用意味着处理你绘制的东西的一些步骤是为你完成的。渲染真正的大对象时SVG速度更快,但渲染许多对象时速度更慢。

Canvas中的游戏可能会更快。一个巨大的地图程序在SVG中可能会更快。如果你想使用Canvas,我有一些关于获取可移动对象的教程。

画布对于更快速的事情和繁重的位图操作(比如动画)会更好,但是如果你想要很多的交互性,将需要更多的代码。

我已经在HTML DIV制作的绘图和Canvas制作的绘图上运行了一堆数字。我可以写一个关于每个好处的巨大的帖子,但我会给我的测试的一些相关的结果考虑你的具体应用:

我做了Canvas和HTML DIV测试页面,都有可移动的“节点”。画布节点是我创建的对象,并在Javascript中保持跟踪。 HTML节点是可移动的Div。

我为每个测试添加了100,000个节点。他们的表现完全不同:

HTML测试选项卡永久加载(定时稍微在5分钟以内,第一次请求杀死页面)。 Chrome的任务管理器说该标签占用了168MB。当我看的时候,占用12-13%的CPU时间,当我不看的时候占用0%。

“画布”选项卡在一秒钟内加载,占用30MB。无论是否正在查看,它总是占用CPU时间的13%。 (2013年编辑:他们主要是固定的)因为当前的设置是在Canvas测试中每30毫秒重新绘制一次,所以在HTML页面上拖动更加平滑,这是设计期望的。 Canvas对此有很多优化。 (帆布失效是最简单的,也裁剪区域,有选择性的重绘,等等。只是取决于你有多少感觉实施)毫无疑问,你可以让 Canvas在对象操作上更快,就像在这个简单的测试中的div一样,当然,加载时间也会更快,Canvas中的绘图/加载速度更快,而且还有更多的优化空间(也就是说,排除非屏幕的东西非常容易)。

结论:

SVG对于应用程序和应用程序而言可能更好(少于1000个?实际取决于)

画布对于成千上万的对象和小心的操作是更好的,但是需要更多的代码(或者库)才能实现。

HTML Div是笨重的,不能缩放,只有圆角可能会使圆形成为可能,但复杂的形状是可能的,但涉及数以百计的微小像素宽度的div。疯狂随之而来。

垃圾佬康哥

发布于 2017-12-26 03:35:58

SVG 对你来说更容易一些,因为选择和移动它已经是内置的.SVG对象是DOM对象,所以它们具有“点击”处理程序等等。

DIV可以,但笨重,并有大量的可怕的性能加载。

画布具有最好的性能,但是你必须自己实现管理状态(对象选择等)的所有概念,或者使用一个库。

和开发者交流更多问题细节吧,去 写回答
相关文章
HTML5(十)——Canvas 与 SVG 区别
作为一名前端攻城狮,Canvas 和 SVG 对于我们并不陌生,canvas 是 HTML5 提供的新元素,而 svg 存在的时间要比 canvas 长很多,svg 并不属于 html,最初的 svg 是由 XML 定义的,在 html 5 中 canvas 与 svg 看着相似,其实不同。
呆呆
2021/10/01
3.4K0
HTML5(十)——Canvas 与 SVG 区别
作为一名前端攻城狮,Canvas 和 SVG 对于我们并不陌生,canvas 是 HTML5 提供的新元素,而 svg 存在的时间要比 canvas 长很多,svg 并不属于 html,最初的 svg 是由 XML 定义的,在 html 5 中 canvas 与 svg 看着相似,其实不同。
呆呆
2021/11/30
1.6K0
HTML5(十)——Canvas 与 SVG 区别
作为一名前端攻城狮,Canvas 和 SVG 对于我们并不陌生,canvas 是 HTML5 提供的新元素,而 svg 存在的时间要比 canvas 长很多,svg 并不属于 html,最初的 svg 是由 XML 定义的,在 html 5 中 canvas 与 svg 看着相似,其实不同。
呆呆
2021/09/30
1.5K0
SVG与foreignObject元素
可缩放矢量图形Scalable Vector Graphics - SVG基于XML标记语言,用于描述二维的矢量图形。作为一个基于文本的开放网络标准,SVG能够优雅而简洁地渲染不同大小的图形,并和CSS、DOM、JavaScript等其他网络标准无缝衔接。SVG图像及其相关行为被定义于XML文本文件之中,这意味着可以对其进行搜索、索引、编写脚本以及压缩,此外这也意味着可以使用任何文本编辑器和绘图软件来创建和编辑SVG。
WindRunnerMax
2023/08/13
5720
HTML5(七)——SVG基础入门
声明:SVG 虽然也是标签,但它不是 HTML5,标题加了 HTML5 只是为了与 canvas 放到一起。
呆呆
2021/11/26
1.8K0
HTML5(七)——SVG基础入门
声明:SVG 虽然也是标签,但它不是 HTML5,标题加了 HTML5 只是为了与 canvas 放到一起。
呆呆
2021/09/30
2.2K0
[1097]DIV的显示与隐藏
*********************div的显示和隐藏************************************
周小董
2022/04/13
5.3K0
为什么要用SVG?- svg与iconfont、图片多维度对比
SVG是什么? SVG是一种可缩放矢量图形(英语:Scalable Vector Graphics,SVG)是基于可扩展标记语言(XML),用于描述二维矢量图形的图形格式。SVG由W3C制定,是一个开
腾讯ISUX
2018/06/29
5.5K0
HTML5(八)——SVG 之 path 详解
path 是 SVG 基本形状中最强大的一个,不仅可以实现我们上一篇《HTML5(七)——SVG基础入门》中,介绍的 SVG 预定义的 line、rect、circle、ellipse、line、polyline、polygon 六种基本形状。还可以实现更复杂的效果,我们就开始学习 path 如何应用。
呆呆
2021/10/01
2.6K0
HTML5(八)——SVG 之 path 详解
path 是 SVG 基本形状中最强大的一个,不仅可以实现我们上一篇《HTML5(七)——SVG基础入门》中,介绍的 SVG 预定义的 line、rect、circle、ellipse、line、polyline、polygon 六种基本形状。还可以实现更复杂的效果,我们就开始学习 path 如何应用。
呆呆
2021/09/30
3.2K0
HTML5(九)——超强的 SVG 动画
SVG 动画有很多种实现方法,也有很大SVG动画库,现在我们就来介绍 svg动画实现方法都有哪些?
呆呆
2021/09/30
3.3K0
HTML5(九)——超强的 SVG 动画
SVG 动画有很多种实现方法,也有很大SVG动画库,现在我们就来介绍 svg动画实现方法都有哪些?
呆呆
2021/10/01
3.7K0
HTML5(八)——SVG 之 path 详解
path 是 SVG 基本形状中最强大的一个,不仅可以实现我们上一篇《HTML5(七)——SVG基础入门》中,介绍的 SVG 预定义的 line、rect、circle、ellipse、line、polyline、polygon 六种基本形状。还可以实现更复杂的效果,我们就开始学习 path 如何应用。
呆呆
2021/11/30
3.2K0
HTML5(九)——超强的 SVG 动画
SVG 动画有很多种实现方法,也有很大SVG动画库,现在我们就来介绍 svg动画实现方法都有哪些?
呆呆
2021/11/30
2.5K0
将 SVG 与媒体查询结合使用
在 HTML 文档中,我们可以根据视口的条件显示、隐藏或重新排列页面的某些部分。例如,如果浏览器窗口的宽度为 480 像素,我们可能会将导航从水平导航移动到垂直可折叠列表。将 SVG 与媒体查询一起使用时,我们可以做类似的事情。
玖柒的小窝
2021/09/12
6.3K0
将 SVG 与媒体查询结合使用
HTML5视频与音频
简单介绍 HTML5 对视频和音频特性规范文档的制定是被讨论最多的。除浏览器自带支持的明显好处外,评论点集中在浏览器提供商对音频/视频格式 的不同选择。如果你准备使用HTML5的
踏浪
2019/07/31
2K0
html5 canvas 与小丑。
  以前开发动画应用你可能需要学习很复杂的动画制作框架。自从HTML5画布(Canvas)功能面世后,Web动画就一下子从云端跌落到了地面——任何一个Web程序员都可以轻易的用画布(Canvas)技术+JavaScript来开发出各种动画效果。
笔阁
2018/09/04
1.5K0
html5 canvas 与小丑。
【案例】 HTML5 SVG图标按钮菜单特效
HTML5 SVG图标按钮菜单特效是一款TweenMax基于svg绘制图标按钮点击展开多个图标菜单特效。
用户1730674
2020/03/26
7.2K0
【案例】 HTML5 SVG图标按钮菜单特效
绘制SVG内容到Canvas的HTML5应用
SVG与Canvas是HTML5上绘制图形应用的两种完全不同模式的技术,两种绘制图形方式各有优缺点,但两者并非水火不容,尤其是SVG内容可直接绘制在Canvas上的功能,使得两者可以完美的融合在一起,
HT for Web
2018/01/03
5.4K0
绘制SVG内容到Canvas的HTML5应用
绘制SVG内容到Canvas的HTML5应用
SVG与Canvas是HTML5上绘制图形应用的两种完全不同模式的技术,两种绘制图形方式各有优缺点,但两者并非水火不容,尤其是SVG内容可直接绘制在Canvas上的功能,使得两者可以完美的融合在一起,让Canvas可享用到现有丰富的SVG素材,并不失SVG矢量无级缩放的特点。 《基于HTML5的Drag and Drop生成图片Base64信息》这篇虽然展示的是拖拽普通栅格图片的效果,但你也可以直接拖拽SVG格式的图片进行显示,只不过普通图片的格式数据为data:image/png类型,而SVG格式的数据类
HT_hightopo
2018/07/09
1.8K0

相似问题

NameNode与SecondaryNameNode 的区别与联系?

0124

Ruby:kind_of?与instance_of?与is_a?

21.9K

如何使HTML5中的div适用于Firefox?

1190

ArgumentException与ArgumentNullException?

2276

htmlentities()与htmlspecialchars()?

2313
相关问答用户
腾讯云TDP | TDP会员擅长3个领域
到家集团 | 技术VP擅长5个领域
平安资管 | 架构师擅长4个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文