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 相关文章推荐
firefox firebug中文入门教程 脚本之家新年特别版
Jan 02 Javascript
jQuery遍历DOM节点操作之filter()方法详解
Apr 14 Javascript
移动端js触摸事件详解
Sep 18 Javascript
vue实现长图垂直居上 vue实现短图垂直居中
Oct 18 Javascript
浅析Vue 生命周期
Jun 21 Javascript
Vue和React组件之间的传值方式详解
Jan 31 Javascript
Vue infinite update loop的问题解决
Apr 23 Javascript
Vue动态组件和异步组件原理详解
May 06 Javascript
原生js实现密码强度验证功能
Mar 18 Javascript
vue实现点击出现操作弹出框的示例
Nov 05 Javascript
JS如何监听div的resize事件详解
Dec 03 Javascript
基于vue与element实现创建试卷相关功能(实例代码)
Dec 07 Vue.js
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
浅谈PHP 闭包特性在实际应用中的问题
2009/10/30 PHP
PHP配置把错误日志以邮件方式发送方法(Windows系统)
2015/06/23 PHP
php开发工具有哪五款
2015/11/09 PHP
phpinfo() 中 Local Value(局部变量)Master Value(主变量) 的区别
2016/02/03 PHP
php中array_column函数简单实现方法
2016/07/11 PHP
详解PHP 二维数组排序保持键名不变
2019/03/06 PHP
PHP sdk实现在线打包代码示例
2020/12/09 PHP
Extjs学习笔记之五 一个小细节renderTo和applyTo的区别
2010/01/07 Javascript
js 3秒后跳转页面的实现代码
2014/03/10 Javascript
AngularJS学习笔记之TodoMVC的分析
2015/02/22 Javascript
基于jquery实现轮播焦点图插件
2016/03/31 Javascript
Bootstrap源码解读导航(6)
2016/12/23 Javascript
AngulerJS学习之按需动态加载文件
2017/02/13 Javascript
详解vue.js的devtools安装
2017/05/26 Javascript
详解使用vuex进行菜单管理
2017/12/21 Javascript
jQuery幻灯片插件owlcarousel参数说明中文文档
2018/02/27 jQuery
浅谈React的最大亮点之虚拟DOM
2018/05/29 Javascript
jQuery使用bind动态绑定事件无效的处理方法
2018/12/11 jQuery
JS表单验证插件之数据与逻辑分离操作实例分析【策略模式】
2020/05/01 Javascript
python使用any判断一个对象是否为空的方法
2014/11/19 Python
python下如何查询CS反恐精英的服务器信息
2017/01/17 Python
python中如何正确使用正则表达式的详细模式(Verbose mode expression)
2017/11/08 Python
LRUCache的实现原理及利用python实现的方法
2017/11/21 Python
聊聊Python中的pypy
2018/01/12 Python
python中sys.argv函数精简概括
2018/07/08 Python
浅谈django orm 优化
2018/08/18 Python
Tensorflow:转置函数 transpose的使用详解
2020/02/11 Python
Django models filter筛选条件详解
2020/03/16 Python
美国排名第一的在线葡萄酒商店:Wine.com
2016/09/07 全球购物
美国价格实惠的在线眼镜网站:Zeelool
2020/12/25 全球购物
金蝶的一道SQL笔试题
2012/12/18 面试题
涉外经济法专业毕业生推荐信
2013/11/24 职场文书
简短证婚人证婚词
2014/01/09 职场文书
业务部门经理岗位职责
2014/02/23 职场文书
工作检讨书大全
2015/01/26 职场文书
vue组件的路由高亮问题解决方法
2021/05/11 Vue.js