当前位置:首页 > VUE

vue实现卡片拖拽

2026-02-18 08:08:01VUE

Vue 实现卡片拖拽的方法

使用 Vue 实现卡片拖拽功能可以通过原生 HTML5 的拖放 API 或第三方库如 vuedraggable 来实现。以下是两种常见的实现方式:

使用 HTML5 拖放 API

HTML5 提供了原生的拖放 API,可以通过 draggable 属性和相关事件实现拖拽功能。

vue实现卡片拖拽

<template>
  <div class="container">
    <div 
      v-for="(item, index) in items" 
      :key="index"
      class="card"
      draggable="true"
      @dragstart="handleDragStart(index, $event)"
      @dragover.prevent
      @drop="handleDrop(index, $event)"
    >
      {{ item }}
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: ['卡片1', '卡片2', '卡片3', '卡片4'],
      draggedIndex: null
    };
  },
  methods: {
    handleDragStart(index, event) {
      this.draggedIndex = index;
      event.dataTransfer.setData('text/plain', index);
    },
    handleDrop(index, event) {
      const draggedIndex = this.draggedIndex;
      if (draggedIndex !== null && draggedIndex !== index) {
        const newItems = [...this.items];
        const [draggedItem] = newItems.splice(draggedIndex, 1);
        newItems.splice(index, 0, draggedItem);
        this.items = newItems;
      }
    }
  }
};
</script>

<style>
.card {
  padding: 10px;
  margin: 5px;
  background: #f0f0f0;
  border: 1px solid #ccc;
  cursor: move;
}
</style>

使用 vuedraggable

vuedraggable 是一个基于 Sortable.js 的 Vue 拖拽组件,提供了更简单的方式实现拖拽功能。

  1. 安装 vuedraggable

    vue实现卡片拖拽

    npm install vuedraggable
  2. 在 Vue 组件中使用:

    
    <template>
    <div class="container">
     <draggable 
       v-model="items" 
       group="cards" 
       @start="dragStart" 
       @end="dragEnd"
     >
       <div v-for="(item, index) in items" :key="index" class="card">
         {{ item }}
       </div>
     </draggable>
    </div>
    </template>
import draggable from 'vuedraggable';

export default { components: { draggable }, data() { return { items: ['卡片1', '卡片2', '卡片3', '卡片4'] }; }, methods: { dragStart() { console.log('拖拽开始'); }, dragEnd() { console.log('拖拽结束'); } } };

.card { padding: 10px; margin: 5px; background: #f0f0f0; border: 1px solid #ccc; cursor: move; } ```

注意事项

  • 性能优化:如果卡片数量较多,建议使用虚拟滚动(如 vue-virtual-scroller)避免性能问题。
  • 跨组件拖拽vuedraggablegroup 属性可以实现跨组件的拖拽功能。
  • 移动端支持:HTML5 拖放 API 在移动端支持较差,建议使用 vuedraggable 或触摸事件库(如 hammer.js)。

标签: 卡片拖拽
分享给朋友:

相关文章

vue拖拽实现方式

vue拖拽实现方式

Vue拖拽实现方式 使用HTML5原生拖拽API HTML5提供了原生的拖拽API,可以通过draggable属性、dragstart、dragend、dragover和drop等事件实现基础拖拽功能…

vue实现按卡片轮播

vue实现按卡片轮播

实现卡片轮播的基本思路 在Vue中实现卡片轮播通常需要结合轮播组件库或自定义滑动动画效果。核心逻辑包括动态渲染卡片、处理滑动事件、计算当前展示的卡片位置。 使用第三方库(Swiper) 安装Swip…

vue内实现拖拽

vue内实现拖拽

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

vue实现carousel拖拽

vue实现carousel拖拽

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

jquery 拖拽

jquery 拖拽

jQuery 拖拽实现方法 使用 jQuery 实现拖拽功能可以通过多种方式完成,以下是常见的几种方法: 使用 jQuery UI 的拖拽功能 jQuery UI 提供了 draggable 方法…

vue 拖拽排序 实现

vue 拖拽排序 实现

实现拖拽排序的基本思路 在Vue中实现拖拽排序通常需要借助HTML5的拖放API或第三方库如sortablejs、vuedraggable等。以下是两种常见实现方式: 使用HTML5原生拖放API…