当前位置:首页 > VUE

vue实现拖拽到容器里

2026-03-06 20:42:26VUE

实现拖拽到容器的基本步骤

使用 Vue 实现拖拽功能可以借助 HTML5 的拖放 API 或第三方库如 vuedraggable。以下是两种常见方法的实现方式。

使用 HTML5 拖放 API

HTML5 提供了原生拖放 API,通过 draggabledragstartdragenddragoverdrop 等事件实现拖拽功能。

vue实现拖拽到容器里

<template>
  <div>
    <!-- 拖拽元素 -->
    <div
      v-for="item in draggableItems"
      :key="item.id"
      draggable="true"
      @dragstart="dragStart(item)"
      class="draggable-item"
    >
      {{ item.name }}
    </div>

    <!-- 放置容器 -->
    <div
      @dragover.prevent
      @drop="drop"
      class="drop-container"
    >
      拖拽到这里
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      draggableItems: [
        { id: 1, name: 'Item 1' },
        { id: 2, name: 'Item 2' },
      ],
      draggedItem: null,
    };
  },
  methods: {
    dragStart(item) {
      this.draggedItem = item;
    },
    drop() {
      if (this.draggedItem) {
        // 将拖拽元素添加到容器中
        console.log('Dropped:', this.draggedItem);
        this.draggedItem = null;
      }
    },
  },
};
</script>

<style>
.draggable-item {
  padding: 8px;
  margin: 4px;
  background: #f0f0f0;
  cursor: move;
}
.drop-container {
  padding: 20px;
  margin-top: 10px;
  border: 2px dashed #ccc;
}
</style>

使用 vuedraggable 库

vuedraggable 是一个基于 Sortable.js 的 Vue 拖拽库,简化了拖拽功能的实现。

vue实现拖拽到容器里

安装依赖:

npm install vuedraggable

示例代码:

<template>
  <div>
    <h3>拖拽列表</h3>
    <draggable
      v-model="list"
      group="items"
      @end="onDragEnd"
      class="drag-list"
    >
      <div v-for="item in list" :key="item.id" class="drag-item">
        {{ item.name }}
      </div>
    </draggable>

    <h3>放置容器</h3>
    <draggable
      v-model="container"
      group="items"
      @end="onDragEnd"
      class="drop-container"
    >
      <div v-for="item in container" :key="item.id" class="drag-item">
        {{ item.name }}
      </div>
    </draggable>
  </div>
</template>

<script>
import draggable from 'vuedraggable';

export default {
  components: { draggable },
  data() {
    return {
      list: [
        { id: 1, name: 'Item 1' },
        { id: 2, name: 'Item 2' },
      ],
      container: [],
    };
  },
  methods: {
    onDragEnd() {
      console.log('拖拽完成');
    },
  },
};
</script>

<style>
.drag-list, .drop-container {
  min-height: 50px;
  padding: 10px;
  border: 1px dashed #ccc;
  margin-bottom: 10px;
}
.drag-item {
  padding: 8px;
  margin: 4px;
  background: #f0f0f0;
  cursor: move;
}
</style>

注意事项

  • 使用 HTML5 拖放 API 时,需要阻止 dragover 事件的默认行为(@dragover.prevent),否则 drop 事件不会触发。
  • vuedraggable 提供了更多高级功能,如跨列表拖拽、动画效果等,适合复杂场景。
  • 拖拽操作可能涉及数据同步,确保在拖拽完成后更新数据状态。

标签: 拖拽容器里
分享给朋友:

相关文章

拖拽实现vue

拖拽实现vue

实现拖拽功能的基本思路 在Vue中实现拖拽功能可以通过HTML5的Drag and Drop API或第三方库如vuedraggable来完成。以下是两种常见方法的详细说明。 使用HTML5 Dra…

vue实现carousel拖拽

vue实现carousel拖拽

实现拖拽轮播的基本思路 在Vue中实现可拖拽的Carousel组件需要结合触摸事件(touchstart、touchmove、touchend)和鼠标事件(mousedown、mousemove、mo…

vue实现拆分拖拽

vue实现拆分拖拽

Vue 实现拆分拖拽功能 拆分拖拽通常指将一个元素拆分为多个部分,并允许用户通过拖拽重新排列或组合这些部分。以下是实现这一功能的几种方法: 使用 Vue.Draggable 库 Vue.Dragga…

vue拖拽功能实现

vue拖拽功能实现

Vue 拖拽功能实现方法 使用 HTML5 原生拖拽 API HTML5 提供了原生的拖拽 API,通过 draggable 属性和相关事件实现基础拖拽功能。 <template>…

vue实现dom拖拽

vue实现dom拖拽

Vue 实现 DOM 拖拽 使用 HTML5 原生拖拽 API HTML5 提供了原生的拖拽 API,可以通过 draggable 属性和相关事件实现拖拽功能。在 Vue 中,可以通过绑定这些事件来实…

vue实现页面拖拽

vue实现页面拖拽

Vue 实现页面拖拽的方法 使用原生 HTML5 拖拽 API HTML5 提供了原生的拖拽 API,可以通过 draggable 属性和相关事件实现拖拽功能。在 Vue 中可以直接使用这些 API。…