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 +WebSocket + WaveSurferJS 实现H5聊天对话交互的实例
Nov 18 Vue.js
Vue开发中常见的套路和技巧总结
Nov 24 Vue.js
vue3.0+vue-router+element-plus初实践
Dec 02 Vue.js
vue 页面跳转的实现方式
Jan 12 Vue.js
Vue仿Bibibili首页的问题
Jan 21 Vue.js
深入了解Vue动态组件和异步组件
Jan 26 Vue.js
Vite和Vue CLI的优劣
Jan 30 Vue.js
vue实现同时设置多个倒计时
May 20 Vue.js
vue-element-admin项目导入和导出的实现
May 21 Vue.js
vue3获取当前路由地址
Feb 18 Vue.js
vue里使用create, mounted调用方法
Apr 26 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
DC最新动画电影:《战争之子》为何内容偏激,毁了一个不错的漫画
2020/04/09 欧美动漫
Laravel框架使用Seeder实现自动填充数据功能
2018/06/13 PHP
IE JS无提示关闭窗口不提示的方法
2010/04/29 Javascript
BOM与DOM的区别分析
2010/10/26 Javascript
jquery应该如何来设置改变按钮input的onclick事件
2012/12/10 Javascript
Jquery 获取对象的几种方式介绍
2014/01/17 Javascript
基于jQuery的JavaScript模版引擎JsRender使用指南
2014/12/29 Javascript
JS使用ajax方法获取指定url的head信息中指定字段值的方法
2015/03/24 Javascript
JavaScript获取两个数组交集的方法
2015/06/09 Javascript
JS访问SWF的函数用法实例
2015/07/01 Javascript
javascript和jQuery实现网页实时聊天的ajax长轮询
2016/07/20 Javascript
基于bootstrap实现广告轮播带图片和文字效果
2016/07/22 Javascript
完美解决jQuery 鼠标快速滑过后,会执行多次滑出的问题
2016/12/08 Javascript
JS中使用textPath实现线条上的文字
2017/12/25 Javascript
JS 实现分页打印功能
2018/05/16 Javascript
vue结合axios与后端进行ajax交互的方法
2018/07/06 Javascript
Node如何后台数据库使用增删改查功能
2019/11/21 Javascript
在Django的通用视图中处理Context的方法
2015/07/21 Python
Python 删除连续出现的指定字符的实例
2018/06/29 Python
Numpy中的mask的使用
2018/07/21 Python
python取数作为临时极大值(极小值)的方法
2018/10/15 Python
详解爬虫被封的问题
2019/04/23 Python
Pytorch Tensor的索引与切片例子
2019/08/18 Python
Python 、Pycharm、Anaconda三者的区别与联系、安装过程及注意事项
2019/10/11 Python
欧洲最大的球衣网上商店:Kitbag
2017/11/11 全球购物
德国户外装备、登山运动和攀岩商店:tapir store
2020/02/12 全球购物
CSS代码检查工具stylelint的使用方法详解
2021/03/27 HTML / CSS
环境工程毕业生自荐信
2013/11/17 职场文书
求职信的要素有哪些呢
2013/12/26 职场文书
索桥的故事教学反思
2014/02/06 职场文书
俞敏洪励志演讲稿
2014/04/29 职场文书
迎国庆演讲稿
2014/09/15 职场文书
毕业设计论文评语
2014/12/31 职场文书
老乡会致辞
2015/07/28 职场文书
Django分页器的用法你都了解吗
2021/05/26 Python
Python还能这么玩之只用30行代码从excel提取个人值班表
2021/06/05 Python