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 elementUI 使用el-select 时 change事件的触发问题
Nov 17 Vue.js
详解vue-cli项目在IE浏览器打开报错解决方法
Dec 10 Vue.js
vue使用exif获取图片旋转,压缩的示例代码
Dec 11 Vue.js
Vue——前端生成二维码的示例
Dec 19 Vue.js
Vue仿百度搜索功能
Dec 28 Vue.js
vue 动态生成拓扑图的示例
Jan 03 Vue.js
vue watch监控对象的简单方法示例
Jan 07 Vue.js
Vue常用API、高级API的相关总结
Feb 02 Vue.js
vue实现滑动解锁功能
Mar 03 Vue.js
vue打包时去掉所有的console.log
Apr 10 Vue.js
vue3种table表格选项个数的控制方法
Apr 14 Vue.js
vue特效之翻牌动画
Apr 20 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开发环境配置(MySQL数据库安装图文教程)
2010/04/28 PHP
PHP __autoload()方法真的影响性能吗?
2012/03/30 PHP
PHP无限分类(树形类)的深入分析
2013/06/02 PHP
php实现session自定义会话处理器的方法
2015/01/27 PHP
在WordPress中使用wp_count_posts函数来统计文章数量
2016/01/05 PHP
javascript Discuz代码中的msn聊天小功能
2008/05/25 Javascript
基于jQuery判断两个元素是否有重叠部分的代码
2012/07/25 Javascript
jquery教程限制文本框只能输入数字和小数点示例分享
2014/01/13 Javascript
jQuery中mouseover事件用法实例
2014/12/26 Javascript
jquery实现动静态条形统计图
2015/08/17 Javascript
jQuery实现垂直半透明手风琴特效代码分享
2015/08/21 Javascript
js获取对象、数组的实际长度,元素实际个数的实现代码
2016/06/08 Javascript
详解微信小程序——自定义圆形进度条
2016/12/29 Javascript
bootstrap表格内容过长时用省略号表示的解决方法
2017/11/21 Javascript
微信小程序实现简单评论功能
2018/11/28 Javascript
IE11下CKEditor在Bootstrap Modal中下拉问题的解决
2019/09/25 Javascript
Vue中用JSON实现刷新界面不影响倒计时
2020/10/26 Javascript
简单谈谈python中的Queue与多进程
2016/08/25 Python
简单实现python进度条脚本
2017/12/18 Python
python+matplotlib绘制旋转椭圆实例代码
2018/01/12 Python
详解如何将python3.6软件的py文件打包成exe程序
2018/10/09 Python
Win10用vscode打开anaconda环境中的python出错问题的解决
2020/05/25 Python
python 使用多线程创建一个Buffer缓存器的实现思路
2020/07/02 Python
python openCV实现摄像头获取人脸图片
2020/08/20 Python
美国中西部家用医疗设备商店:Med Mart(轮椅、踏板车、升降机等)
2019/04/26 全球购物
中科创达面试题
2016/12/28 面试题
集中采购方案
2014/06/10 职场文书
2015大学生实训报告
2014/11/05 职场文书
英文慰问信
2015/02/14 职场文书
财务个人年度总结范文
2015/02/26 职场文书
2015年行政部工作总结
2015/04/28 职场文书
违反纪律检讨书范文
2015/05/07 职场文书
项目备案申请报告
2015/05/15 职场文书
狂人日记读书笔记
2015/06/30 职场文书
python使用pygame创建精灵Sprite
2021/04/06 Python
Vue h函数的使用详解
2022/02/18 Vue.js