【可视化拖拽UI页面】之前端拖拽的经验分享

【可视化拖拽UI页面】之前端拖拽的经验分享
前言:前段时间负责公司的运营管理后台项目,通过运营后台的PC端拖拽配置布局,达到App首页模板的动态UI界面配置,生成页面。趁着周末,整理一下当时所了解到的拖拽。文章会根据大家的反馈或者自己学习经验的累积成长不定期更新丰富。如果你想了解更多PC端的拖拽开发,欢迎点赞关注或者收藏一波[鞠躬]。

当时参考过的小部分网站,其它参考过的大量网站由于电脑硬盘出现故障丢失了无法恢复。

以上网站这些不是很重要,真正重要有用的网站链接我已经帮你筛选整理出来了,并贴在下面的文章里面(分为演示与教程两类),点击相关链接即可进入相关开发学习。

贴上面网站的原因是我想告诉大家,插件选型之前一定要先整理好自己的需求,根据需求在网上寻找插件,并且打开控制台,看看效果是不是你所需要的类型,否则下载到本地后调试了半天发现最后不能达到自己想要的效果,这样既浪费时间又浪费精力,就得不偿失了。所以,我之后有时间会整理一套插件选型筛选的思维导图出来,到时发到掘金或者个人公众号,大家一起分享进步。

好了,言归正传,我们开始上主菜:

拖拽程度的层次

就我搜索到的资料来看,拖拽的程度是分为三类的,如果你有知道的其它类型,欢迎与我交流分享。

1.视图上的拖拽

比如这个:

通过定位来改变顺序,注意看控制台的节点位置,并没有发生对应的改变。这种拖拽仅仅是视图交互上的效果,也是最最简单程度效果的拖拽。

链接:

JS-Demo演示地址

2.视图与节点同步变化的拖拽

2-1 JQ-UI

比如这个:

请注意看控制台的节点位置,发生了对应的改变。这种拖拽是能达到视图与节点的同步变化的效果。

链接:

演示:JQ-UI-Demo演示地址

教程:JQ-UI中文API文档教程

2-2 H5-draggable

比如这个:

h5提供的draggable属性,请注意看控制台的节点位置,也发生了对应的改变。

链接:

演示:Demo演示地址

教程:张鑫旭-draggable教程

2-3 JQ-UI与H5-draggable的取舍问题

JQ-UI和H5-draggable属性都能达到我们想要的效果,那我们应该选择哪个呢?个人而言,最后还是选择了JQ-UI(当然重构我们改用了vue)。主要考虑的地方是灵活性,JQ-UI优于H5-draggable属性的地方正是在于灵活性。draggable属性里面方法封装的比JQ-UI相对而言比较固定,不好调整。所以,以我的经验来看,如果你是简简简单的小需求的拖拽,draggable的属性绝对能够满足你;但如果你的拖拽需求比较复杂,那么我建议你用JQ-UI会比较好点。

3.数据,视图,节点的三者同步变化

比如:这个

vue插件Vue-Draggable,也是vue相关拖拽插件中的star最多的,配置项也最丰富的。

链接:

演示:Demo演示地址

教程:github-vue-draggable

教程:github-vue-Sortable(draggable插件是基于sortabl二次封装的,多看看这篇对使用draggable会有很大的帮助)

项目实践

重构的时候我们是用vue的,选择了这个draggable插件,后面事实证明也是正确的。"花了比用JQ至少少一半的时间就达到了相同的效果"。毕竟Vue只需要考虑数据关注业务流程而不需要考虑节点的操作问题,这点还是非常不错的。反正谁用谁知道[吐舌]。好了,我们贴出代码说明:

// 引入组件import draggable from 'vuedraggable'// 拖拽模块箱子到 => 可整理的箱子/ 垃圾箱子<!--可整理的箱子--><div  class='block'>  <draggable        v-model="templateJson.child"    // 设置接收的拖拽    :options="{group:'people'}"    @remove="stop">    <module-template      :item="item"      :type="templateData.type"      v-for="(item, $index) in templateJson.child"      :key="$index">    </module-template>  </draggable></div><!--垃圾箱子--><div >  <br/>垃<br/>圾<br/>箱  <draggable    v-model="templateJson.child"    :options="{group:'people'}">    <div ></div>  </draggable></div><!--模块箱子--><div >  <draggable        v-model="moduleJson.child"    :clone="clone"    // 开始拖拽的箱子的options选项配置     :options="{group:{ name:'people',  pull:'clone', put:false },sort:false}"    @end="onEnd">    <module-template      :item="item"      :type="templateData.type"      v-for="(item, $index) in moduleJson.child"      :key="$index">    </module-template>  </draggable></div>

clone是指复制,sort:false是指不使用排序。代码中相关options属性的配置说明你可以参考教程中的说明去对应了解。我这里就不再重复赘述了。

一句话总结

如果是简单的拖拽,建议用H5的draggable属性。

如果是复杂点的拖拽,建议用JQ-UI实现。

如果是数据驱动,用Vue-Draggable插件是很不错的选择。

与我交流

1.想了解更多,欢迎订阅我的个人公众号:付出的前端路(yhzg_gz)

2.如果你有其它更好的想法想一起交流,可以加入下面的微信交流群,追求代码质量,高效率编程是我们共同的目标。预祝在本群聊得开心,玩得开心。

that's all, 以上就是我目前所有的关于PC端项目拖拽经验的总结。觉得对你开发有帮助的可以点赞收藏一波,如果我哪里写错了,希望能指点出来。如果你有更好的想法或者建议,可以提出来与我交流。大家一起进步,共同成长。再次感谢[鞠躬]。

推荐阅读

    学习写字楼新选择6000元主流配置

    学习写字楼新选择6000元主流配置,,这种配置需要考虑双核心的办公和娱乐平台,充分考虑办公室的办公需求和娱乐需求,以约6000元的预算和cost-e

    酷睿I7 配置

    酷睿I7 配置,配置,玩家国度啦华硕 Rampage II Extreme(3800元)如果米不够,也可以把Extreme改为Gene,不过是小板内存推荐金士顿6G DDR3 2000骇

    提高3A四核羿龙II游戏配置的性能

    提高3A四核羿龙II游戏配置的性能,,以节能环保为主题的IT产业,目前3A低端平台处理器、主板芯片组、独立开发卡性能突出,特别是在与AMD的处理

    opporeno8参数配置及价格

    opporeno8参数配置及价格,面部,亿元,Oppo的荣誉2020年1月4日,接近屏幕关闭传感器是否支持双卡:支持oppor11splus什么时候上市的Oppo R11S P

    查看配置:酷睿i3530集展示办公平台

    查看配置:酷睿i3530集展示办公平台,,由于时间和精力的关系,我们不可能对所有的配置进行评论,希望我们能理解,我希望我们的评论能在那些需要帮

    3500元超额值学生娱乐结构的优化配置

    3500元超额值学生娱乐结构的优化配置,,作为一个DIY的主流用户领域的学生,每个用户51学生攒机的高峰。因为学生用户没有稳定的收入来源,攒机

    电脑配置快捷键|查看电脑配置快捷键

    电脑配置快捷键|查看电脑配置快捷键,,查看电脑配置快捷键1.在win10中,快捷键组合win+E已经变成了“快速访问”,不再是以前的“我的电脑了”2

    6000元教你黑盒5000+权限配置

    6000元教你黑盒5000+权限配置,,一系列的价格后,最经典的AMD双核处理器mdash;mdash;Athlon 64 X2 5000 +黑版mdash;mdash;目前的价格已经低至565