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 20 Vue.js
vuex Module将 store 分割成模块的操作
Dec 07 Vue.js
vue 基于abstract 路由模式 实现页面内嵌的示例代码
Dec 14 Vue.js
vue的hash值原理也是table切换实例代码
Dec 14 Vue.js
8个非常实用的Vue自定义指令
Dec 15 Vue.js
vue监听键盘事件的相关总结
Jan 29 Vue.js
Vue如何实现变量表达式选择器
Feb 18 Vue.js
详解Vue中$props、$attrs和$listeners的使用方法
Feb 18 Vue.js
vue整合百度地图显示指定地点信息
Apr 06 Vue.js
vue中this.$http.post()跨域和请求参数丢失的解决
Apr 08 Vue.js
vue封装数字翻牌器
Apr 20 Vue.js
解决vue自定义组件@click点击失效问题
Apr 30 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源码 fsockopen获取网页内容实例详解
2016/09/24 PHP
解决PHP上传非标准格式的图片pjpeg失败的方法
2017/03/12 PHP
浅析PHP中json_encode与json_decode的区别
2020/07/15 PHP
JavaScript基本编码模式小结
2012/05/23 Javascript
基于JQuery的模拟苹果桌面Dock效果(稳定版)
2012/10/15 Javascript
很好用的js日历算法详细代码
2013/03/07 Javascript
Javascript级联下拉菜单以及AJAX数据验证核心代码
2013/05/10 Javascript
JS命名空间的另一种实现
2013/08/09 Javascript
node.js Web应用框架Express入门指南
2014/05/28 Javascript
JavaScript eval() 函数介绍及应用示例
2014/07/29 Javascript
jQuery处理json数据返回数组和输出的方法
2015/03/11 Javascript
js实现上一页下一页的效果【附代码】
2016/03/10 Javascript
KnockoutJS 3.X API 第四章之click绑定
2016/10/10 Javascript
有关文件上传 非ajax提交 得到后台数据问题
2016/10/12 Javascript
vue页面使用阿里oss上传功能的实例(一)
2017/08/09 Javascript
Angularjs cookie 操作实例详解
2017/09/27 Javascript
vue表单中遍历表单操作按钮的显示隐藏示例
2019/10/30 Javascript
记一次react前端项目打包优化的方法
2020/03/30 Javascript
实例讲解React 组件生命周期
2020/07/08 Javascript
vue npm install 安装某个指定的版本操作
2020/08/11 Javascript
基于jquery实现彩色投票进度条代码解析
2020/08/26 jQuery
Python中的列表生成式与生成器学习教程
2016/03/13 Python
Python使用min、max函数查找二维数据矩阵中最小、最大值的方法
2018/05/15 Python
Python实现string字符串连接的方法总结【8种方式】
2018/07/06 Python
python调用摄像头显示图像的实例
2018/08/03 Python
Python中__slots__属性介绍与基本使用方法
2018/09/05 Python
浅谈matplotlib.pyplot与axes的关系
2020/03/06 Python
Django 自定义权限管理系统详解(通过中间件认证)
2020/03/11 Python
使用 Python 读取电子表格中的数据实例详解
2020/04/17 Python
世界上最好的威士忌和烈性酒购买网站:The Whisky Exchange
2016/11/20 全球购物
怎么写好自荐信
2013/10/30 职场文书
乡镇计划生育工作汇报
2014/10/28 职场文书
2014年销售部工作总结
2014/12/01 职场文书
自荐信格式模板
2015/03/27 职场文书
班委竞选稿范文
2015/11/21 职场文书
总结Pyinstaller打包的高级用法
2021/06/28 Python