vue quasar 拖动效果
时间: 2023-07-17 11:03:50 浏览: 232
在 Vue Quasar 中实现拖动效果可以使用 Quasar 提供的 `q-draggable` 组件。下面是一个简单的示例代码:
```vue
<template>
<div>
<div
v-for="(item, index) in items"
:key="index"
class="draggable-item"
:class="{ dragging: draggingItem === index }"
@mousedown="startDragging(index)"
@mousemove="handleDragging($event, index)"
@mouseup="endDragging(index)"
>
{{ item }}
</div>
</div>
</template>
<script>
export default {
data() {
return {
items: ['Item 1', 'Item 2', 'Item 3', 'Item 4'],
draggingItem: null,
};
},
methods: {
startDragging(index) {
this.draggingItem = index;
},
handleDragging(event, index) {
if (this.draggingItem !== null) {
// 设置被拖动项的样式
event.target.style.transform = `translate(${event.clientX}px, ${event.clientY}px)`;
}
},
endDragging(index) {
if (this.draggingItem !== null) {
// 更新列表顺序
const item = this.items.splice(this.draggingItem, 1)[0];
this.items.splice(index, 0, item);
this.draggingItem = null;
}
},
},
};
</script>
<style>
.draggable-item {
cursor: move;
transition: transform 0.2s;
}
.dragging {
opacity: 0.5;
}
</style>
```
在上面的示例中,通过使用 `v-for` 指令渲染出了一个拖动列表,每个项都可以被拖动。当鼠标按下时,设置 `draggingItem` 的值为当前项的索引,表示该项正在被拖动。在鼠标移动时,根据鼠标的位置动态改变被拖动项的样式,实现拖动效果。当鼠标松开时,更新列表的顺序,通过改变数组的元素位置实现拖动项的重新排序。
记得在你的组件中导入 `q-draggable` 组件:
```javascript
import { QDraggable } from 'quasar';
```
然后在组件中使用 `q-draggable` 组件,将需要拖动的元素包裹在 `q-draggable` 组件中即可。
阅读全文