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 相关文章推荐
在一个浏览器里呈现所有浏览器测试结果的前端测试工具的思路
Mar 02 Javascript
菜鸟javascript基础资料整理2
Dec 06 Javascript
jquery队列函数用法实例
Dec 16 Javascript
jQuery使用之设置元素样式用法实例
Jan 19 Javascript
jquery中radio checked问题
Mar 16 Javascript
javascript电商网站抢购倒计时效果实现
Nov 19 Javascript
jQuery实现带分组数据的Table表头排序实例分析
Nov 24 Javascript
利用angular.copy取消变量的双向绑定与解析
Nov 25 Javascript
javascript实现非常简单的小数取整功能示例
Jun 13 Javascript
vue实现Input输入框模糊查询方法
Jan 29 Javascript
js实现简单掷骰子小游戏
Oct 24 Javascript
JavaScript使用canvas绘制坐标和线
Apr 28 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
Php Cookie的一个使用注意点
2008/11/08 PHP
深入mysql_fetch_row()与mysql_fetch_array()的区别详解
2013/06/05 PHP
Yii配置文件用法详解
2014/12/04 PHP
php针对cookie操作的队列操作类实例
2014/12/10 PHP
php控制文件下载速度的方法
2015/03/24 PHP
浅谈socket同步和异步、阻塞和非阻塞、I/O模型
2016/12/15 PHP
Code:loadScript( )加载js的功能函数
2007/02/02 Javascript
Display SQL Server Login Mode
2007/06/21 Javascript
js去除空格的12种实用方法
2013/11/08 Javascript
jQuery操作CheckBox的方法介绍(选中,取消,取值)
2014/02/04 Javascript
JS实现仿QQ效果的三级竖向菜单
2015/09/25 Javascript
js原生代码实现轮播图的实例讲解
2017/07/28 Javascript
js如何编写简单的ajax方法库
2017/08/02 Javascript
nginx配置React静态页面的方法教程
2017/11/03 Javascript
利用js实现前后台传送Json的示例代码
2018/03/29 Javascript
vue-cli 脚手架基于Nightwatch的端到端测试环境的过程
2018/09/30 Javascript
微信小程序仿知乎实现评论留言功能
2018/11/28 Javascript
layui 上传文件_批量导入数据UI的方法
2019/09/23 Javascript
纯js实现无缝滚动功能代码实例
2020/02/21 Javascript
vue相同路由跳转强制刷新该路由组件操作
2020/08/05 Javascript
Python制作爬虫采集小说
2015/10/25 Python
使用CodeMirror实现Python3在线编辑器的示例代码
2019/01/14 Python
Django ORM多对多查询方法(自定义第三张表&amp;ManyToManyField)
2019/08/09 Python
Python模块/包/库安装的六种方法及区别
2020/02/24 Python
Django实现celery定时任务过程解析
2020/04/21 Python
西班牙香水和化妆品网上商店:Douglas
2017/10/29 全球购物
英国领先的男装设计师服装购物网站:Mainline Menswear
2018/02/04 全球购物
惊艳的手工时装首饰:Migonne Gavigan
2018/02/23 全球购物
纽约州一群才华横溢的金匠制作而成:Hearth Jewelry
2019/03/22 全球购物
犯错检讨书
2014/02/21 职场文书
医院保洁服务方案
2014/06/11 职场文书
授权委托书格式
2014/07/31 职场文书
2014年学生会生活部工作总结
2014/11/07 职场文书
公司内部升职自荐信
2015/03/27 职场文书
面试复试通知单
2015/04/24 职场文书
乡镇干部学习心得体会
2016/01/23 职场文书