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使用vant中的checkbox实现全选功能
Nov 17 Vue.js
详解Vue的mixin策略
Nov 19 Vue.js
vue3.0+vue-router+element-plus初实践
Dec 02 Vue.js
浅谈Vue使用Elementui修改默认的最快方法
Dec 05 Vue.js
vue+elementUI动态增加表单项并添加验证的代码详解
Dec 17 Vue.js
vue监听键盘事件的相关总结
Jan 29 Vue.js
详解vue3中组件的非兼容变更
Mar 03 Vue.js
vue引入Excel表格插件的方法
Apr 28 Vue.js
Vue3.0写自定义指令的简单步骤记录
Jun 27 Vue.js
vue 实现弹窗关闭后刷新效果
Apr 08 Vue.js
vue.js 使用原生js实现轮播图
Apr 26 Vue.js
vue postcss-px2rem 自适应布局
May 15 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
php连接mssql的一些相关经验及注意事项
2013/02/05 PHP
解析左右值无限分类的实现算法
2013/06/20 PHP
php数组去重实例及分析
2013/11/26 PHP
解决微信授权回调页面域名只能设置一个的问题
2016/12/11 PHP
Linux下快速搭建php开发环境
2017/03/13 PHP
js 居中漂浮广告
2010/03/21 Javascript
基于JavaScript代码实现微信扫一扫下载APP
2015/12/30 Javascript
javascript实现简单的全选和反选功能
2016/01/05 Javascript
JavaScript String 对象常用方法详解
2016/05/13 Javascript
jQuery实现点击行选中或取消CheckBox的方法
2016/08/01 Javascript
angular和BootStrap3实现购物车功能
2017/01/25 Javascript
js实现带简单弹性运动的导航条
2017/02/22 Javascript
angularJS深拷贝详解
2017/03/23 Javascript
vue2.0开发入门笔记之.vue文件的生成和使用
2017/09/19 Javascript
Vue 过滤器filters及基本用法
2017/12/26 Javascript
Webpack path与publicPath的区别详解
2018/05/03 Javascript
layui 实现自动选择radio单选框(checked)的方法
2019/09/03 Javascript
[56:29]Secret vs Optic 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python中关键字nonlocal和global的声明与解析
2017/03/12 Python
关于Python正则表达式 findall函数问题详解
2018/03/22 Python
详解Python解决抓取内容乱码问题(decode和encode解码)
2019/03/29 Python
在Python中os.fork()产生子进程的例子
2019/08/08 Python
详解一种用django_cache实现分布式锁的方式
2019/09/01 Python
python 通过邮件控制实现远程控制电脑操作
2020/03/16 Python
HTML5自定义mp3播放器源码
2020/01/06 HTML / CSS
图库照片、免版税图片、矢量艺术、视频片段:Depositphotos
2019/08/02 全球购物
线程的基本概念、线程的基本状态以及状态之间的关系
2012/10/26 面试题
委托证明的格式
2014/01/10 职场文书
《黄河颂》教学反思
2014/02/07 职场文书
平面设计求职信
2014/03/10 职场文书
安全生产大检查方案
2014/05/07 职场文书
保护野生动物倡议书
2014/05/16 职场文书
物业消防安全责任书
2014/07/23 职场文书
副总经理岗位职责
2015/02/02 职场文书
2015年学生管理工作总结
2015/05/26 职场文书
初中美术教学反思
2016/02/17 职场文书