vue实现div拖拽互换位置
程序员文章站
2023-01-20 14:10:22
本文实例为大家分享了vue实现div拖拽互换位置的具体代码,供大家参考,具体内容如下
template模板
本文实例为大家分享了vue实现div拖拽互换位置的具体代码,供大家参考,具体内容如下
template模板
<transition-group tag="div" class="container"> <div class="item" v-for="(item,index) in items" :key="item.key" :style="{background:item.color,width:'80px',height:'80px'}" draggable="true" @dragstart="handledragstart($event, item)" @dragover.prevent="handledragover($event, item)" @dragenter="handledragenter($event, item)" @dragend="handledragend($event, item)" > </div> </transition-group>
script:
<script> export default { name: 'toolbar', data () { return { items: [ { key: 1, color: '#ffebcc'}, { key: 2, color: '#ffb86c'}, { key: 3, color: '#f01b2d'} ], dragging: null } }, 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.items] console.log(newitems) const src = newitems.indexof(this.dragging) const dst = newitems.indexof(item) newitems.splice(dst, 0, ...newitems.splice(src, 1)) this.items = newitems } } } </script> <style scoped> .container{ width: 80px; height: 300px; position: absolute; left: 0; display:flex; flex-direction: column; padding: 0; } .item { margin-top: 10px; transition: all linear .3s }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: 于琮人物生平简介?他是怎么做上宰相的
下一篇: vue实现双向绑定和依赖收集遇到的坑