请问是否有这样的vue或者前端三方组件?
可以添加块,然后进行拖拽:
以下是符合你需求的前端组件推荐(支持动态添加模块 + 自由拖拽):
组件库: Vue.Draggable (基于 Sortable.js)
特点:
示例代码:
<template>
<draggable v-model="blocks" @end="onDragEnd">
<div v-for="block in blocks" :key="block.id" class="drag-block">
{{ block.content }}
<button @click="removeBlock(block.id)">删除</button>
</div>
</draggable>
<button @click="addBlock">添加新块</button>
</template>
<script>
import draggable from "vuedraggable";
export default {
components: { draggable },
data() {
return {
blocks: [{ id: 1, content: "模块1" }]
};
},
methods: {
addBlock() {
this.blocks.push({
id: Date.now(),
content: `模块${this.blocks.length+1}`
});
},
removeBlock(id) {
this.blocks = this.blocks.filter(block => block.id !== id);
},
onDragEnd(evt) {
console.log("新顺序:", this.blocks);
}
}
};
</script>
<style>
.drag-block {
padding: 20px;
margin: 10px;
background: #f0f0f0;
cursor: move;
}
</style>Vue Grid Layout
特点:响应式网格布局,支持拖拽/缩放/动态增删
npm install vue-grid-layout --saveInteract.js + Vue 封装
Dragula
vue-dragula 插件⚠️ 注意:所有方案都需要在拖拽结束时更新数据模型(如更新数组顺序),以实现状态持久化。
11 回答1.3k 阅读
3 回答957 阅读✓ 已解决
2 回答958 阅读✓ 已解决
3 回答936 阅读✓ 已解决
2 回答647 阅读
3 回答964 阅读
3 回答962 阅读
1、Vue-Ganttastic

2、v-gantt
