当前位置:首页 > VUE

vue实现盒子拖拽

2026-03-09 00:45:37VUE

Vue 实现盒子拖拽

在 Vue 中实现盒子拖拽功能可以通过原生 HTML5 的拖放 API 或第三方库(如 vuedraggable)来完成。以下是两种方法的实现方式:

使用原生 HTML5 拖放 API

  1. 设置可拖拽元素
    通过 draggable="true" 属性标记元素为可拖拽,并监听 dragstart 事件存储拖拽数据。

    <template>
      <div 
        class="box" 
        draggable="true" 
        @dragstart="handleDragStart"
      >
        拖拽我
      </div>
    </template>
    methods: {
      handleDragStart(e) {
        e.dataTransfer.setData('text/plain', e.target.id);
      }
    }
  2. 设置放置区域
    监听 dragoverdrop 事件,阻止默认行为并处理放置逻辑。

    <div 
      class="drop-area" 
      @dragover.prevent 
      @drop="handleDrop"
    >
      放置区域
    </div>
    methods: {
      handleDrop(e) {
        const draggedId = e.dataTransfer.getData('text/plain');
        const draggedElement = document.getElementById(draggedId);
        e.target.appendChild(draggedElement);
      }
    }

使用 vuedraggable

  1. 安装库
    通过 npm 或 yarn 安装 vuedraggable

    npm install vuedraggable
  2. 实现列表拖拽
    使用 vuedraggable 组件实现列表项的拖拽排序。

    vue实现盒子拖拽

    <template>
      <draggable v-model="items" @end="onDragEnd">
        <div v-for="item in items" :key="item.id">
          {{ item.name }}
        </div>
      </draggable>
    </template>
    import draggable from 'vuedraggable';
    
    export default {
      components: { draggable },
      data() {
        return {
          items: [
            { id: 1, name: 'Item 1' },
            { id: 2, name: 'Item 2' },
          ]
        };
      },
      methods: {
        onDragEnd() {
          console.log('拖拽完成');
        }
      }
    };

注意事项

  • 原生拖放 API 需要处理更多细节(如样式、兼容性),适合简单场景。
  • vuedraggable 提供了更丰富的功能(如动画、跨列表拖拽),适合复杂需求。
  • 移动端可能需要额外处理触摸事件。

标签: 盒子拖拽
分享给朋友:

相关文章

vue实现拖拽上传

vue实现拖拽上传

Vue 拖拽上传实现方法 使用 HTML5 原生拖拽 API 在 Vue 中可以通过监听原生拖拽事件实现基础功能: <template> <div class="dr…

vue实现拖拽滚动

vue实现拖拽滚动

Vue 实现拖拽滚动的方法 在 Vue 中实现拖拽滚动功能,可以通过监听鼠标事件并结合 CSS 或 JavaScript 控制滚动行为。以下是几种常见的实现方式: 使用原生事件监听 通过监听 mou…

vue实现简单拖拽

vue实现简单拖拽

Vue 实现简单拖拽功能 在 Vue 中实现拖拽功能可以通过 HTML5 的拖放 API 或第三方库(如 vuedraggable)来完成。以下是两种常见的实现方式: 使用 HTML5 拖放 API…

vue实现卡片拖拽

vue实现卡片拖拽

Vue 实现卡片拖拽的方法 使用 HTML5 拖放 API HTML5 提供了原生拖放 API,结合 Vue 可以轻松实现拖拽功能。以下是一个基本实现示例: <template> &…

vue实现元素拖拽

vue实现元素拖拽

Vue 实现元素拖拽的方法 使用 HTML5 原生拖拽 API HTML5 提供了原生拖拽 API,可以通过 draggable 属性结合事件监听实现拖拽功能。 <template>…

vue实现拖拽图层

vue实现拖拽图层

Vue 实现拖拽图层的方法 使用原生 HTML5 拖拽 API HTML5 提供了原生的拖拽 API,可以通过 draggable 属性、dragstart、dragend、dragover 和 dr…