vue-draggable设置animation属性导致拖拽完成后,拖拽的元素在原位置等待一段时间才消失
时间: 2023-12-08 12:03:27 浏览: 152
这个问题也可能是由于动画效果导致的延迟。当设置了 animation 属性后,拖拽的元素会在拖拽结束时执行动画效果,但是动画效果结束后,元素并不会立即消失,而是会等待一段时间才消失,这可能是由于动画效果结束后,元素仍然在浏览器的渲染队列中等待下一次重绘导致的。
你可以尝试在动画效果结束后,立即将拖拽的元素隐藏或移除,以避免出现延迟的问题。具体地,你可以在拖拽结束时,使用 `animationend` 事件监听动画结束,然后再将元素移除或隐藏。代码示例:
```javascript
methods: {
onEnd() {
// 在拖拽结束时立即将元素隐藏
this.hideElement();
// 监听动画结束事件
this.$refs.draggable.addEventListener('animationend', this.onAnimationEnd);
},
onAnimationEnd(event) {
// 确认是拖拽元素的动画结束
if (event.target === this.$refs.draggable) {
// 动画结束后再将元素移除或隐藏
this.removeElement();
// 移除事件监听
this.$refs.draggable.removeEventListener('animationend', this.onAnimationEnd);
}
},
hideElement() {
this.$refs.draggable.style.opacity = 0;
},
removeElement() {
// 移除元素
this.$refs.draggable.remove();
// 或者隐藏元素
// this.$refs.draggable.style.display = 'none';
}
}
```
这样处理后,应该能够避免拖拽完成后的延迟问题。
阅读全文