vue中拖拽更改顺序

文章描述了如何在HTML中使用Vue.js的draggable属性和相关方法,实现在一个包含13个小盒子的列表中通过拖拽进行位置交换,展示了`handleDragStart`、`handleDragEnd`、`handleDragOver`和`handleDragEnter`等方法的实现过程。
摘要由CSDN通过智能技术生成

大盒子里有13个小盒子

在这里插入图片描述

通过拖拽变换他们的位置

在这里插入图片描述

下面是代码

html

<div style="width: 302px;border: 1px solid #000;display: flex;flex-wrap:wrap;margin: 0 auto;">
      <div v-for="item in divList" 
           :key="item" 
           style="width: 50px;height: 50px;"
           draggable="true"
           @dragstart="handleDragStart($event, item)"
           @dragover.prevent="handleDragOver($event, item)"
           @dragenter="handleDragEnter($event, item)"
           @dragend="handleDragEnd($event, item)">{{item}}</div>
    </div>

data

dragging:null,
divList:[1,2,3,4,5,6,7,8,9,10,11,12,13],
methods:{
    //拖拽相关
    handleDragStart(e,item){
        this.dragging = item;
    },
    handleDragEnd(e,item){
        this.dragging = null
    },
    //首先把div变成可以放置的元素,即重写dragenter/dragover
    handleDragOver(e) {
        e.dataTransfer.dropEffect = 'move'// e.dataTransfer.dropEffect="move";//在dragenter中针对放置目标来设置!
    },
    handleDragEnter(e,item){
        e.dataTransfer.effectAllowed = "move"//为需要移动的元素设置dragstart事件
        if(item === this.dragging){
          return
        }
        const newItems = [...this.divList]
        const src = newItems.indexOf(this.dragging)
        const dst = newItems.indexOf(item)
        newItems.splice(dst, 0, ...newItems.splice(src, 1))
        this.divList = newItems;
    },
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值