vue3 拖曳填充

<template> <div class="container"> <div class="box" @dragstart="dragStart($event, item, 'left')" @drop="drop($event, 'left')" @dragover.prevent> <div v-for="(item, index) in leftItems" :key="index" draggable="true"> {{ item }} </div> </div> <div class="box" @dragstart="dragStart($event, item, 'right')" @drop="drop($event, 'right')" @dragover.prevent> <div v-for="(item, index) in rightItems" :key="index" draggable="true"> {{ item }} </div> </div> </div> </template> <script> export default { data() { return { leftItems: ['Item 1', 'Item 2', 'Item 3', 'Item 4', 'Item 5'], rightItems: [], draggedItem: null, sourceBox: '', }; }, methods: { dragStart(event, item, box) { this.draggedItem = item; this.sourceBox = box; event.dataTransfer.setData('text/plain', item); }, drop(event, targetBox) { if (this.sourceBox !== targetBox && this.draggedItem) { let movedItem; if (this.sourceBox === 'left') { movedItem = this.leftItems.splice(this.leftItems.indexOf(this.draggedItem), 1)[0]; this.rightItems.push(movedItem); } else { movedItem = this.rightItems.splice(this.rightItems.indexOf(this.draggedItem), 1)[0]; this.leftItems.push(movedItem); } event.target.appendChild(document.querySelector(`[draggable=true]:contains('${movedItem}')`)); } }, }, }; </script> <style scoped> .container { display: flex; justify-content: space-around; } .box { width: 80%; min-height: 100px; border: 1px solid #ccc; display: flex; flex-wrap: wrap; padding: 10px; } </style>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值