vuedraggable禁止拖拽出所在区域
时间: 2023-09-28 18:07:49 浏览: 32
Vue 基于 vuedraggable 实现选中、拖拽、排序效果
5星 · 资源好评率100%
如果你使用的是 Vue.js 并且使用了 vuedraggable 插件,那么可以通过以下两种方法禁止拖拽出所在区域:
1. 使用 `lockAxis` 属性
`lockAxis` 属性可以将拖拽限制在一个轴线上,如水平方向或垂直方向。你可以将该属性设置为 "x" 或 "y" 来禁止拖拽跨越该轴线。
```
<draggable :list="list" lockAxis="y">
<div v-for="item in list" :key="item.id">{{ item.name }}</div>
</draggable>
```
2. 使用 `move` 事件
你可以使用 `move` 事件来捕捉拖拽过程中的位置变化,并在拖拽超出所在区域时将其移回。以下是一个示例:
```
<draggable :list="list" @move="handleDrag">
<div v-for="item in list" :key="item.id">{{ item.name }}</div>
</draggable>
methods: {
handleDrag(evt) {
const targetRect = evt.target.getBoundingClientRect()
const containerRect = evt.target.parentNode.getBoundingClientRect()
if (targetRect.left < containerRect.left || targetRect.right > containerRect.right || targetRect.top < containerRect.top || targetRect.bottom > containerRect.bottom) {
evt.cancel()
}
}
}
```
在 `handleDrag` 方法中,我们首先获取拖拽元素和其父容器的位置信息。然后,我们检查拖拽元素是否超出了其父容器的边界。如果超出了,我们就调用 `cancel` 方法取消拖拽操作并将元素移回其原始位置。
希望这些方法对你有所帮助。
阅读全文