vue-draggable使用animation导致拖拽完成后,拖拽的元素延迟后才消失
时间: 2024-02-28 16:52:26 浏览: 117
这种情况可能是由于动画效果的延迟导致的。你可以尝试在拖拽结束后立即移除拖拽元素的动画类,以避免延迟。可以使用 `transitionend` 事件来监听动画结束,然后移除动画类。以下是示例代码:
```javascript
<template>
<div>
<draggable v-model="list" @end="onDragEnd">
<div v-for="(item, index) in list" :key="index" class="item">{{ item }}</div>
</draggable>
</div>
</template>
<script>
import draggable from 'vuedraggable'
export default {
components: {
draggable
},
data() {
return {
list: ['Item 1', 'Item 2', 'Item 3']
}
},
methods: {
onDragEnd(evt) {
const draggedItem = evt.item
const animationClass = 'animate__fadeOut'
draggedItem.classList.add(animationClass)
draggedItem.addEventListener('transitionend', () => {
draggedItem.classList.remove(animationClass)
})
}
}
}
</script>
```
在上述代码中,`onDragEnd` 方法会在拖拽结束时被调用。它会获取拖拽元素并添加 `animate__fadeOut` 类来触发动画效果。然后,它会监听 `transitionend` 事件来等待动画结束,然后移除 `animate__fadeOut` 类。这样可以确保拖拽元素在动画结束后立即消失。
阅读全文