问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Div & Svg可视化探索笔记

发布网友 发布时间:2024-05-14 08:17

我来回答

1个回答

热心网友 时间:2024-06-21 21:37

最近因为工作需要做了点HTML5可视化研究如下
为什么没有字体颜色作为一个设计师很不爽
第一次发文有写错的地方还请诸位高手多多包涵

设想,要在页面中生成大量的简单图形,比如10万个方块,并对它们进行拖拽操作。
基本思路有三种方式,传统Div,Svg,与Canvas。
为了加拖拽,暂时没有用canvas。
因为canvas无法生成dom节点,不存在id这种属性,需要通过判断鼠标位置来获取元素再进行操作。虽然写个isMouseinObj()的function也不是不行,但总觉得以后针对某对象单独处理会夜长梦多(主要还是懒)。。。不过从生成图形角度讲,canvas理论上是最快的。

因为贪生怕死担心Dom过多死机,准备先分区生成方块,于是:
一个简图,整体划分如下,设两个input框的值分别为m, n,每个蓝块包括n个绿块。点击每个蓝块可在下方生成n个绿块。
点击GenAll可一次性生成m*n个绿块。点击Drag可对绿块进行拖拽。

模拟开始。

首先是用div模拟方块。因为比较熟悉写起来也简单。

Div的拖拽方式可以分成两种。

Jquery-ui的draggble还有很多其他参数,请参考api文档。

现在假定一种新情形:绿色方块只能拖拽到虚线框之内。

默认情况下,Html元素均不可拖拽,所以需要设置拖拽元素的draggable属性为true。同时,默认无法将元素放置到其他元素中,所以需要event.preventDefault()设置允许放置。
本例中,为class为abox的绿方块添加draggable。
为class为wrap的虚线框添加preventDefault。
之后通过dataTransfer传输数据,实现box的移动。

由于Svg也是直接在Html中生成Dom节点,理论上Div所能实现的功能它都可以实现,并且绘图效果更佳。

然后生成Svg元素,并设置其属性。

循环生成Svg方块并添加拖拽属性。

但这种方式有个问题,就是——慢。当生成仅10000个方块时,效率便低的不可估量。
然而Svg无法应用Html5原生的Drag and Drop事件。

相比于引用插件,这样的效率提高了不少。

从结果上看,在数量少时,针对方块这种简单图形的简单操作Div和Svg均可胜任。然而设置了总共生成100000个方块,发现单从生成的角度,Svg的渲染用时大约是Div的1/2(这里指Dom中直接绘制Svg而非通过js插件绘制Svg)。
加上拖拽功能后,用Html5原生拖放事件的Div,及用鼠标事件的Svg,明显快快快快于应用js插件拖放的效率。于是乎插件虽然强大但对于大量节点的处理实在过于缓慢。
于是在图形化上还是应用Svg更舒畅一些。
但有一个尚未解决的问题。
应用鼠标事件拖动Svg,当鼠标移动过快时,mousemove事件无法触发,导致移动效果不能实现。粗略查了下似乎可以添加透明背景层接收所有触发事件,不过还没有深入研究。
这篇就到此吧。等解决了mousemove的bug再更新后续。
(´・ω・`)

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
太和县环球嘉年华港口有限公司怎么样? 为什么抵触相亲? 鸡蛋怎么做好吃家常做法大全 为何抵触相亲 为什么很多人都抵触相亲? 鸡蛋怎么做才营养好吃呢? 怎么可以搞到110电话打过去给别人 植发后能保持多久?有人知道吗? 银联储蓄卡包括什么 怎么让电脑图标变小如何将电脑桌面上软件变小 VB题求解 DragMode 属性的作用是什么? Translation和margin属性,多种方式实现拖拽 股市行情对债券的影响 原始帝城最后一个仙王是谁 天黄猴枣散的成份 "项王即日因留沛公饮,……庄不得击"一段的翻译 发热件哪家好 征途 护心镜怎么改 丁程鑫是用九宫格还是26键打字? 请问公务员身份转参公身份好不好,有什么影响?参公身份转事业编呢... 成都德康动物健康技术服务有限公司怎么样? 滨州金盾押运 ...对现在的科长很不满,(很多人对这个人不满包括领导) 卫生院聘用职工能参加对领导得年度考核吗 大叶牡丹是什么意思? 折痕是心里的暖印是中考题吗 西出玉门金蝎在哪 迎春花是什么 迎春花知识大全 柳絮是几月飘? 柳絮一般什么时候飘落? c#自动生成textbox,并可拖拽位置,如何修改textbox属性 ...受到老师的表杨后来就慢慢膨胀了,容易骄傲的孩子该怎么教育?_百度... 专接本以后只给结业证,没有毕业证有用不?怎样才能拿到毕业证?_百度... 河北专科大三专接本不成功后,毕业后还能专升本自考本吗 南理工专接本毕业答辩不过怎么办? 专接本,本科未毕业,学生证期了,怎么办? 专接本被录取了,但是大专因为种种原因没拿到毕业证,这种情况怎么办? VNC软件安装 做血气分析上午检查还是下午检查好? 下列关于遗嘱效力说法错误的是( )。 有法律效力的遗嘱该怎么办 冒险岛大巨变后怎么无限刷蘑菇大臣~ 有关冒险岛无限刷蘑菇大臣 冒险岛蘑菇大臣怎么重复打 冒险岛蘑菇城打蘑菇大臣的任务能放弃再接吗? 冒险岛蘑菇大臣怎么重复杀? 冒险岛刷蘑菇大臣的具体流程是怎样的 奶奶去世爷爷一个人怎么生活 奶奶刚过世,剩下爷爷一人,做孙子的该怎样孝顺爷爷呢? 爷爷去世后已经与前妻合葬。现在我奶奶也去世了,想和爷爷合葬,该怎么办...