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 相关文章推荐
Javascript 面向对象特性
Dec 28 Javascript
onkeydown事件解决按回车键直接提交数据的需求
Apr 11 Javascript
jQuery实现多按钮单击变色
Nov 27 Javascript
鼠标悬停小图标显示大图标
Jan 22 Javascript
Jquery实现简单的轮播效果(代码管用)
Mar 14 Javascript
jQuery简单入门示例之用户校验demo示例
Jul 09 Javascript
基于JavaScript Array数组方法(新手必看篇)
Aug 20 Javascript
浅谈js继承的实现及公有、私有、静态方法的书写
Oct 28 Javascript
详谈jQuery中的一些正则匹配表达式
Mar 08 Javascript
Vue全家桶实践项目总结(推荐)
Nov 04 Javascript
JavaScript原型对象、构造函数和实例对象功能与用法详解
Aug 04 Javascript
详解项目升级到vue-cli3的正确姿势
Jan 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 $_SERVER详解
2009/01/16 PHP
使用JavaScript创建新样式表和新样式规则
2016/06/14 PHP
PHP数据的提交与过滤基本操作实例详解
2016/11/11 PHP
利用PHP获取网站访客的所在地位置
2017/01/18 PHP
详谈symfony window下的安装 安装时候出现的问题以及解决方法
2017/09/28 PHP
PHP框架实现WebSocket在线聊天通讯系统
2019/11/21 PHP
php使用fputcsv实现大数据的导出操作详解
2020/02/27 PHP
javascript 自定义事件初探
2009/08/21 Javascript
JavaScript设计模式之外观模式实例
2014/10/10 Javascript
使用jQuery实现购物车结算功能
2017/08/15 jQuery
微信小程序ajax实现请求服务器数据及模版遍历数据功能示例
2017/12/15 Javascript
node puppeteer(headless chrome)实现网站登录
2018/05/09 Javascript
手把手教你vue-cli单页到多页应用的方法
2018/05/31 Javascript
Vue+webpack+Element 兼容问题总结(小结)
2018/08/16 Javascript
chosen实现省市区三级联动
2018/08/16 Javascript
ES6 fetch函数与后台交互实现
2018/11/14 Javascript
jQuery实现适用于移动端的跑马灯抽奖特效示例
2019/01/18 jQuery
js中数组常用方法总结(推荐)
2019/04/09 Javascript
vue里的data要用return返回的原因浅析
2019/05/28 Javascript
vue单页应用的内存泄露定位和修复问题小结
2019/08/02 Javascript
JS实现transform实现扇子效果
2020/01/17 Javascript
Python 时间操作例子和时间格式化参数小结
2014/04/24 Python
利用Python爬取可用的代理IP
2016/08/18 Python
Python获取当前公网ip并自动断开宽带连接实例代码
2018/01/12 Python
使用Python三角函数公式计算三角形的夹角案例
2020/04/15 Python
安装Anaconda3及使用Jupyter的方法
2020/10/27 Python
Bibloo奥地利:购买女装、男装、童装、鞋和配件
2018/10/18 全球购物
投标保密承诺书
2014/05/19 职场文书
员工安全生产责任书
2014/07/22 职场文书
大学教师师德师风演讲稿
2014/08/22 职场文书
初中毕业典礼演讲稿
2014/09/09 职场文书
党员三严三实心得体会
2014/10/13 职场文书
六年级学生评语大全
2014/12/26 职场文书
2015年教研室工作总结范文
2015/05/23 职场文书
先进工作者主要事迹材料
2015/11/03 职场文书
就业指导讲座心得体会
2016/01/15 职场文书