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 相关文章推荐
jQuery基础框架浅入剖析
Dec 27 Javascript
extjs ColumnChart设置不同的颜色实现代码
May 17 Javascript
JavaScript解析URL参数示例代码
Aug 12 Javascript
JS与C#编码解码
Dec 03 Javascript
iframe里的页面禁止右键事件的方法
Jun 10 Javascript
javascript制作2048游戏
Mar 30 Javascript
浅谈JavaScript中setInterval和setTimeout的使用问题
Aug 01 Javascript
AngularJS基础教程之简单介绍
Sep 27 Javascript
vue2.0 和 animate.css的结合使用
Dec 12 Javascript
js原生map实现的方法总结
Jan 19 Javascript
JS Thunk 函数的含义和用法实例总结
Apr 08 Javascript
Vue中nprogress页面加载进度条的方法实现
Nov 13 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(3) php 函数
2010/02/15 PHP
让PHP更快的提供文件下载的代码
2012/06/13 PHP
PHP十六进制颜色随机生成器功能示例
2017/07/24 PHP
PHP迭代器和迭代的实现与使用方法分析
2018/04/19 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
2020/02/27 PHP
jQuery判断checkbox是否选中的小例子
2013/12/02 Javascript
浅谈JavaScript中的对象及Promise对象的实现
2015/11/15 Javascript
三种AngularJS中获取数据源的方式
2016/02/02 Javascript
JavaScript通过代码调用Flash显示的方法
2016/02/02 Javascript
JS实现仿PS的调色板效果完整实例
2016/12/21 Javascript
使用vue-router与v-if实现tab切换遇到的问题及解决方法
2018/09/07 Javascript
个人小程序接入支付解决方案
2019/05/23 Javascript
详解微信小程序自定义组件的实现及数据交互
2019/07/22 Javascript
Vue路由模块化配置的完整步骤
2019/08/14 Javascript
vue使用nprogress实现进度条
2019/12/09 Javascript
浅谈Tensorflow模型的保存与恢复加载
2018/04/26 Python
Python实现迭代时使用索引的方法示例
2018/06/05 Python
python语音识别实践之百度语音API
2018/08/30 Python
python使用phoenixdb操作hbase的方法示例
2019/02/28 Python
python使用threading.Condition交替打印两个字符
2019/05/07 Python
计算机二级python学习教程(2) python语言基本语法元素
2019/05/16 Python
基于Python实现拆分和合并GIF动态图
2019/10/22 Python
Python操作dict时避免出现KeyError的几种解决方法
2020/09/20 Python
python合并多个excel文件的示例
2020/09/23 Python
Python字典实现伪切片功能
2020/10/28 Python
HTML5教程之html 5 本地数据库(Web Sql Database)
2014/04/03 HTML / CSS
手摸手教你用canvas实现给图片添加平铺水印的实现
2019/08/20 HTML / CSS
韩国美国时尚服装和美容在线全球市场:KOODING
2018/11/07 全球购物
美国温暖商店:The Warming Store
2018/12/15 全球购物
阿联酋优惠券服务:Living Kool
2019/12/12 全球购物
阿拉伯时尚购物网站:Nisnass
2021/02/07 全球购物
机械专业毕业生自荐信
2013/11/02 职场文书
三好生演讲稿
2014/09/12 职场文书
工作表扬信
2015/01/17 职场文书
岁月神偷观后感
2015/06/11 职场文书
z-index不起作用
2021/03/31 HTML / CSS