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 相关文章推荐
mysql输出数据赋给js变量报unterminated string literal错误原因
May 22 Javascript
获取中文字符串的实际长度代码
Jun 05 Javascript
项目中常用的JS方法整理
Jan 30 Javascript
JavaScript控制按钮可用或不可用的方法
Apr 03 Javascript
JavaScrip常见的一些算法总结
Dec 28 Javascript
JavaScript事件学习小结(一)事件流
Jun 09 Javascript
详细谈谈javascript的对象
Jul 31 Javascript
微信小程序scroll-view实现横向滚动和上拉加载示例
Mar 06 Javascript
jQuery中each循环的跳出和结束实例
Aug 16 jQuery
vue 基于element-ui 分页组件封装的实例代码
Dec 10 Javascript
vue如何实现动态加载脚本
Feb 05 Javascript
JS实现简易日历效果
Jan 25 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
Bo-Blog专用的给Windows服务器的IIS Rewrite程序
2007/08/26 PHP
解析php file_exists无效的解决办法
2013/06/26 PHP
php输出指定时间以前时间格式的方法
2015/03/21 PHP
PHP实现微信对账单处理
2018/10/01 PHP
JavaScript高级程序设计(第3版)学习笔记11 内建js对象
2012/10/11 Javascript
firefox下jquery iframe刷新页面提示会导致重复之前动作
2012/12/17 Javascript
基于jquery插件实现常见的幻灯片效果
2013/11/01 Javascript
深入浅析Extjs中store分组功能的使用方法
2016/04/20 Javascript
全面解析JS字符串和正则表达式中的match、replace、exec等函数
2016/07/01 Javascript
jquery 标签 隔若干行加空白或者加虚线的方法
2016/12/07 Javascript
详解react-router4 异步加载路由两种方法
2017/09/12 Javascript
Three.js中网格对象MESH的属性与方法详解
2017/09/27 Javascript
JavaScript门面模式详解
2017/10/19 Javascript
AngularJS实现的select二级联动下拉菜单功能示例
2017/10/25 Javascript
实现div内部滚动条滚动到底部和顶部的代码
2017/11/15 Javascript
Vue cli+mui 区域滚动的实例代码
2018/01/25 Javascript
react native基于FlatList下拉刷新上拉加载实现代码示例
2018/09/30 Javascript
Vue.js组件间通信方式总结【推荐】
2018/11/23 Javascript
详解Vue源码学习之双向绑定
2019/04/10 Javascript
[02:17]快乐加倍!DOTA2食人魔魔法师至宝+迎霜节活动上线
2019/12/22 DOTA
python分析网页上所有超链接的方法
2015/05/08 Python
Python 实现随机数详解及实例代码
2017/04/15 Python
Scrapy抓取京东商品、豆瓣电影及代码分享
2017/11/23 Python
Java及python正则表达式详解
2017/12/27 Python
CSS3 实现时间轴动画
2020/11/25 HTML / CSS
蒙蒂塞罗商店:Monticello Shop
2018/11/25 全球购物
本科生的职业生涯规划范文
2014/01/09 职场文书
光荣入党自我鉴定
2014/01/22 职场文书
高中课前三分钟演讲稿
2014/08/18 职场文书
升学宴答谢词
2015/01/05 职场文书
2015廉洁自律个人总结
2015/02/14 职场文书
2016年全国助残日活动总结
2016/04/01 职场文书
python实现Thrift服务端的方法
2021/04/20 Python
带你学习MySQL执行计划
2021/05/31 MySQL
我的收音机情缘
2022/04/05 无线电
总结三种用 Python 作为小程序后端的方式
2022/05/02 Python