vue实现div拖拽互换位置


Posted in Javascript onJuly 29, 2020

本文实例为大家分享了vue实现div拖拽互换位置的具体代码,供大家参考,具体内容如下

template模板

<transition-group tag="div" class="container">
 <div class="item" v-for="(item,index) in items" :key="item.key" :style="{background:item.color,width:'80px',height:'80px'}"
  draggable="true"
 @dragstart="handleDragStart($event, item)"
  @dragover.prevent="handleDragOver($event, item)"
  @dragenter="handleDragEnter($event, item)" 
  @dragend="handleDragEnd($event, item)" >
 </div>
</transition-group>

script:

<script>
export default {
 name: 'Toolbar',
 data () {
 return {
  items: [
  { key: 1, color: '#ffebcc'},
  { key: 2, color: '#ffb86c'},
  { key: 3, color: '#f01b2d'}
  ],
  
  dragging: null
 }
 },
 methods:{
 handleDragStart(e,item){
  this.dragging = item;
 },
 handleDragEnd(e,item){
  this.dragging = null
 },
 //首先把div变成可以放置的元素,即重写dragenter/dragover
 handleDragOver(e) {
  e.dataTransfer.dropEffect = 'move'// e.dataTransfer.dropEffect="move";//在dragenter中针对放置目标来设置!
 },
 handleDragEnter(e,item){
  e.dataTransfer.effectAllowed = "move"//为需要移动的元素设置dragstart事件
  if(item === this.dragging){
   return
  }
  const newItems = [...this.items]
  console.log(newItems)
  const src = newItems.indexOf(this.dragging)
  const dst = newItems.indexOf(item)
 
  newItems.splice(dst, 0, ...newItems.splice(src, 1))
 
  this.items = newItems
 }
 }
}
</script>
 
<style scoped>
 .container{
  width: 80px;
  height: 300px;
  position: absolute;
  left: 0;
  display:flex;
  flex-direction: column;
  padding: 0;
 }
 .item {
  margin-top: 10px;
  transition: all linear .3s
 }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Using the TextRange Object
Oct 14 Javascript
javascript取消文本选定的实现代码
Nov 14 Javascript
探索Emberjs制作一个简单的Todo应用
Nov 07 Javascript
基于javascript 闭包基础分享
Jul 10 Javascript
JQuery对id中含有特殊字符的转义处理示例
Sep 06 Javascript
JavaScript运算符小结
Jun 03 Javascript
jquery插件jquery.beforeafter.js实现左右拖拽分隔条对比图片的方法
Aug 07 Javascript
javascript基于prototype实现类似OOP继承的方法
Dec 16 Javascript
js实现n秒倒计时后才可以点击的效果
Dec 20 Javascript
详谈表单重复提交的三种情况及解决方法
Aug 16 Javascript
JS实现求5的阶乘示例
Jan 21 Javascript
简单了解vue中父子组件如何相互传递值(基础向)
Jul 12 Javascript
vue插件draggable实现拖拽移动图片顺序
Dec 01 #Javascript
vue.draggable实现表格拖拽排序效果
Dec 01 #Javascript
vuedraggable+element ui实现页面控件拖拽排序效果
Jul 29 #Javascript
Vue组件Draggable实现拖拽功能
Dec 01 #Javascript
BootStrap modal实现拖拽功能
Dec 01 #Javascript
vuejs2.0运用原生js实现简单拖拽元素功能
Aug 21 #Javascript
BootStrap table实现表格行拖拽效果
Dec 01 #Javascript
You might like
使用Xdebug调试和优化PHP程序之[1]
2007/04/17 PHP
用PHP读取RSS feed的代码
2008/08/01 PHP
[原创]PHP正则删除html代码中a标签并保留标签内容的方法
2017/05/23 PHP
PHP超全局变量实现原理及代码解析
2020/09/01 PHP
C#中TrimStart,TrimEnd,Trim在javascript上的实现
2011/01/17 Javascript
jquery.qrcode在线生成二维码使用示例
2013/08/21 Javascript
在子窗口中关闭父窗口的一句代码
2013/10/21 Javascript
JavaScript实现的简单烟花特效代码
2015/10/20 Javascript
jQuery中实现prop()函数控制多选框(全选,反选)
2016/08/19 Javascript
jQuery实现表格奇偶行显示不同背景色 就这么简单
2017/03/13 Javascript
Bootstrap实现各种进度条样式详解
2017/04/13 Javascript
Angular中的interceptors拦截器
2017/06/25 Javascript
react中的ajax封装实例详解
2017/10/17 Javascript
使用Vue制作图片轮播组件思路详解
2018/03/21 Javascript
解决Vue axios post请求,后台获取不到数据的问题方法
2018/08/11 Javascript
vue 2.1.3 实时显示当前时间,每秒更新的方法
2018/09/16 Javascript
JS如何获取地址栏的参数实例讲解
2018/10/06 Javascript
[01:15:18]2014 DOTA2国际邀请赛中国区预选赛 LGD VS Speed Gaming.cn
2014/05/22 DOTA
[47:43]完美世界DOTA2联赛PWL S3 Magama vs GXR 第二场 12.19
2020/12/24 DOTA
Python检测网络延迟的代码
2018/05/15 Python
Pycharm 操作Django Model的简单运用方法
2018/05/23 Python
详解django2中关于时间处理策略
2019/03/06 Python
python使用matplotlib绘制雷达图
2019/10/18 Python
在脚本中单独使用django的ORM模型详解
2020/04/01 Python
如何将tensorflow训练好的模型移植到Android (MNIST手写数字识别)
2020/04/22 Python
详解python变量与数据类型
2020/08/25 Python
世界上最大的折扣香水店:FragranceNet.com
2016/10/26 全球购物
财务支持类个人的自我评价
2014/02/14 职场文书
演讲稿格式
2014/04/30 职场文书
班风口号
2014/06/18 职场文书
幼儿园教师的自我评价范文
2014/09/17 职场文书
干部作风整顿个人剖析材料
2014/10/06 职场文书
个人批评与自我批评总结
2014/10/17 职场文书
2015年园林绿化工作总结
2015/05/23 职场文书
总结一些Java常用的加密算法
2021/06/11 Java/Android
Consul在linux环境的集群部署
2022/04/08 Servers