vue实现拖拽交换位置


Posted in Vue.js onApril 07, 2022

本文实例为大家分享了vue实现拖拽交换位置的具体代码,供大家参考,具体内容如下

<template>
  <div class="root">
    <transition-group tag="div" class="container">
      <div
        class="item"
        :class="'item' + i"
        v-for="(item, i) in items"
        :key="item.key"
        :style="{ 'background-color': item.color, border: '1px solid' }"
        draggable="true"
        @dragstart="handleDragStart($event, item)"
        @dragover.prevent="handleDragOver($event, item)"
        @dragenter="handleDragEnter($event, item)"
        @dragend="handleDragEnd($event, item)"
      >
        <div>{{ item }}</div>
      </div>
    </transition-group>
  </div>
</template>
 
<script>
export default {
  name: "Toolbar",
  data() {
    return {
      items: [
        { key: 1, color: "#3883a0" },
        { key: 2, color: "#4883a0" },
        { key: 3, color: "#5883a0" },
        { key: 4, color: "#6883a0" },
        { key: 5, color: "#7883a0" },
        { key: 6, color: "#8883a0" },
        { key: 7, color: "#9883a0" },
      ],
      ending: null,
      dragging: null,
    };
  },
  methods: {
    handleDragStart(e, item) {
      this.dragging = item;
    },
    handleDragEnd(e, item) {
      if (this.ending.key === this.dragging.key) {
        return;
      }
      let newItems = [...this.items];
      const src = newItems.indexOf(this.dragging);
      const dst = newItems.indexOf(this.ending);
      newItems.splice(src, 1, ...newItems.splice(dst, 1, newItems[src]));
      console.log(newItems);
 
      this.items = newItems;
      this.$nextTick(() => {
        this.dragging = null;
        this.ending = null;
      });
    },
    handleDragOver(e) {
      // 首先把div变成可以放置的元素,即重写dragenter/dragover
      // 在dragenter中针对放置目标来设置
      e.dataTransfer.dropEffect = "move";
    },
    handleDragEnter(e, item) {
      // 为需要移动的元素设置dragstart事件
      e.dataTransfer.effectAllowed = "move";
      this.ending = item;
    },
  },
};
</script>
 
<style lang="less" scoped>
.container {
  display: flex;
  flex-wrap: wrap;
}
.item {
  width: 200px;
  height: 200px;
  margin: 10px;
  color: #fff;
  transition: all linear 0.3s;
}
.item0 {
  width: 400px;
}
</style>

效果

vue实现拖拽交换位置

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Vue.js 相关文章推荐
详解vue实现坐标拾取器功能示例
Nov 18 Vue.js
如何使用 vue-cli 创建模板项目
Nov 19 Vue.js
Vue 打包的静态文件不能直接运行的原因及解决办法
Nov 19 Vue.js
vue + el-form 实现的多层循环表单验证
Nov 25 Vue.js
vue $router和$route的区别详解
Dec 02 Vue.js
vue 在服务器端直接修改请求的接口地址
Dec 19 Vue.js
Vue中引入svg图标的两种方式
Jan 14 Vue.js
vue3.0 项目搭建和使用流程
Mar 04 Vue.js
vue+element ui实现锚点定位
Jun 29 Vue.js
Vue鼠标滚轮滚动切换路由效果的实现方法
Aug 04 Vue.js
vue中div禁止点击事件的实现
Apr 02 Vue.js
vue中this.$http.post()跨域和请求参数丢失的解决
Apr 08 Vue.js
Vue.Draggable实现交换位置
vue-cli3.0修改打包后的文件名和文件地址,打包后本地运行报错解决
vue cli4中mockjs在dev环境和build环境的配置详情
vue中控制mock在开发环境使用,在生产环境禁用方式
Apr 06 #Vue.js
vue3使用vuedraggable实现拖拽功能
vue整合百度地图显示指定地点信息
vue中使用mockjs配置和使用方式
You might like
ThinkPHP3.1新特性之对Ajax的支持更加完善
2014/06/19 PHP
PHP动态柱状图实现方法
2015/03/30 PHP
YII Framework框架教程之安全方案详解
2016/03/14 PHP
header与缓冲区之间的深层次分析
2016/07/30 PHP
PHP 500报错的快速解决方法
2016/12/14 PHP
PHP实现统计所有字符在字符串中出现次数的方法
2017/10/17 PHP
PHP中如何使用Redis接管文件存储Session详解
2018/11/28 PHP
safari,opera嵌入iframe页面cookie读取问题解决方法
2010/06/23 Javascript
Js 时间间隔计算的函数(间隔天数)
2011/11/15 Javascript
jQuery1.6 使用方法一
2011/11/23 Javascript
Javascript 加载和执行-性能提高篇
2012/12/28 Javascript
JS限制Textarea文本域字符个数的具体实现
2013/08/02 Javascript
js原型链与继承解析(初体验)
2016/05/09 Javascript
JQuery遍历元素的后代和同胞实现方法
2016/09/18 Javascript
vue2.0在没有dev-server.js下的本地数据配置方法
2018/02/23 Javascript
jQuery实现图片上传预览效果功能完整实例【测试可用】
2018/05/28 jQuery
Vue.js实现tab切换效果
2019/07/24 Javascript
js模拟实现烟花特效
2020/03/10 Javascript
vue+elementUI中表格高亮或字体颜色改变操作
2020/11/02 Javascript
[35:29]Secret vs VG 2018国际邀请赛淘汰赛BO3 第三场 8.23
2018/08/24 DOTA
在windows系统中实现python3安装lxml
2016/03/23 Python
Python利用multiprocessing实现最简单的分布式作业调度系统实例
2017/11/14 Python
python利用selenium进行浏览器爬虫
2019/04/25 Python
Python获取对象属性的几种方式小结
2020/03/12 Python
python学习之使用Matplotlib画实时的动态折线图的示例代码
2021/02/25 Python
TALLY WEiJL法国网上商店:服装、时装及配饰
2019/08/31 全球购物
会计学个人自荐信模板
2013/12/13 职场文书
五年级英语教学反思
2014/01/31 职场文书
2014社区三八妇女节活动总结
2014/03/01 职场文书
搞笑创意广告语
2014/03/17 职场文书
关于读书的演讲稿600字
2014/08/27 职场文书
上课不认真检讨书
2014/09/17 职场文书
幼儿园个人总结
2015/02/28 职场文书
总经理2015中秋节致辞
2015/07/29 职场文书
zabbix配置nginx监控的实现
2022/05/25 Servers
Java异常体系非正常停止和分类
2022/06/14 Java/Android