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 相关文章推荐
Egret引擎开发指南之运行项目
Sep 03 Javascript
JavaScript的9种继承实现方式归纳
May 18 Javascript
防止Node.js中错误导致进程阻塞的办法
Aug 11 Javascript
Angular通过指令动态添加组件问题
Jul 09 Javascript
JavaScript实现获取两个排序数组的中位数算法示例
Feb 26 Javascript
JavaScript生成随机验证码代码实例
Sep 28 Javascript
浅谈Webpack4 Tree Shaking 终极优化指南
Nov 18 Javascript
微信小程序自定义顶部组件customHeader的示例代码
Jun 03 Javascript
Js on及addEventListener原理用法区别解析
Jul 11 Javascript
vue 导航锚点_点击平滑滚动,导航栏对应变化详解
Aug 10 Javascript
JavaScript中EventBus实现对象之间通信
Oct 18 Javascript
小程序实现筛子抽奖
May 26 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表单重复提交实现方法
2015/09/29 PHP
实例讲解PHP表单处理
2019/02/15 PHP
laravel dingo API返回自定义错误信息的实例
2019/09/29 PHP
Firefox中autocomplete=&quot;off&quot; 设置不起作用Bug的解决方法
2011/03/25 Javascript
一个背景云变换js特效 鼠标移动背景云变化
2012/12/28 Javascript
js读取并解析JSON类型数据的方法
2015/11/14 Javascript
nodejs 的 session 简单使用
2016/06/06 NodeJs
酷! 不同风格页面布局幻灯片特效js实现
2021/02/19 Javascript
微信小程序微信支付接入开发实例详解
2017/04/12 Javascript
mongoose更新对象的两种方法示例比较
2017/12/19 Javascript
解决vue admin element noCache设置无效的问题
2019/11/12 Javascript
微信小程序自定义tabBar的踩坑实践记录
2020/11/06 Javascript
[02:34]DOTA2英雄基础教程 幽鬼
2014/01/02 DOTA
Python简单的制作图片验证码实例
2017/05/31 Python
Python抓取聚划算商品分析页面获取商品信息并以XML格式保存到本地
2018/02/23 Python
Python2和Python3之间的str处理方式导致乱码的讲解
2019/01/03 Python
Python数据报表之Excel操作模块用法分析
2019/03/11 Python
Python读写文件基础知识点
2019/06/10 Python
python 使用装饰器并记录log的示例代码
2019/07/12 Python
Python大数据之网络爬虫的post请求、get请求区别实例分析
2019/11/16 Python
Python range与enumerate函数区别解析
2020/02/28 Python
python简单的三元一次方程求解实例
2020/04/02 Python
python dict如何定义
2020/09/02 Python
如何将Pycharm中调整字体大小的方式设置为&quot;ctrl+鼠标滚轮上下滑&quot;
2020/11/17 Python
利用纯CSS3实现tab选项卡切换示例代码
2016/09/21 HTML / CSS
eDreams加拿大:廉价航班、酒店和度假
2019/03/29 全球购物
Java中实现多态的机制
2015/08/09 面试题
UML设计模式笔试题
2014/06/07 面试题
求职自荐书范文
2013/12/04 职场文书
体育专业学生自我评价范文
2014/01/17 职场文书
渡河少年教学反思
2014/02/12 职场文书
幼儿教师工作感言
2014/02/14 职场文书
安全生产承诺书
2014/03/26 职场文书
企业安全生产月活动总结
2014/07/05 职场文书
2015年主婚人婚礼致辞
2015/07/28 职场文书
Python保存并浏览用户的历史记录
2022/04/29 Python