当前位置:首页 > VUE

vue实现卡片拖动排序

2026-01-19 23:34:29VUE

Vue 实现卡片拖动排序的方法

使用 Vue 实现卡片拖动排序可以通过原生 HTML5 的拖放 API 或第三方库如 vuedraggable 来实现。以下是两种方法的详细说明。

使用 HTML5 拖放 API

HTML5 提供了原生的拖放 API,可以通过 draggable 属性和相关事件(如 dragstartdragenddragoverdrop)实现拖拽排序。

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

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, text: "Item 1" },
        { id: 2, text: "Item 2" },
        { id: 3, text: "Item 3" },
      ],
      draggedIndex: null,
    };
  },
  methods: {
    handleDragStart(index) {
      this.draggedIndex = index;
    },
    handleDragOver(index) {
      if (this.draggedIndex !== index) {
        const draggedItem = this.items[this.draggedIndex];
        this.items.splice(this.draggedIndex, 1);
        this.items.splice(index, 0, draggedItem);
        this.draggedIndex = index;
      }
    },
    handleDrop() {
      this.draggedIndex = null;
    },
  },
};
</script>

<style>
.draggable-item {
  padding: 10px;
  margin: 5px;
  background: #f0f0f0;
  cursor: move;
}
</style>

使用 vuedraggable

vuedraggable 是一个基于 Sortable.js 的 Vue 拖拽组件,提供了更简单的 API 和更丰富的功能。

vue实现卡片拖动排序

安装 vuedraggable

npm install vuedraggable

示例代码:

vue实现卡片拖动排序

<template>
  <div>
    <draggable v-model="items" @end="onDragEnd">
      <div v-for="item in items" :key="item.id" class="draggable-item">
        {{ item.text }}
      </div>
    </draggable>
  </div>
</template>

<script>
import draggable from "vuedraggable";
export default {
  components: {
    draggable,
  },
  data() {
    return {
      items: [
        { id: 1, text: "Item 1" },
        { id: 2, text: "Item 2" },
        { id: 3, text: "Item 3" },
      ],
    };
  },
  methods: {
    onDragEnd() {
      console.log("拖动完成,当前顺序:", this.items);
    },
  },
};
</script>

<style>
.draggable-item {
  padding: 10px;
  margin: 5px;
  background: #f0f0f0;
  cursor: move;
}
</style>

两种方法的对比

  1. HTML5 拖放 API

    • 无需额外依赖,适合简单场景。
    • 需要手动处理更多细节(如索引更新、事件阻止默认行为)。
  2. vuedraggable

    • 功能更强大,支持动画、跨列表拖拽等高级功能。
    • 代码更简洁,适合复杂场景。

根据项目需求选择合适的方法。如果需要快速实现且功能简单,可以使用 HTML5 API;如果需要更多功能或简化代码,推荐使用 vuedraggable

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

相关文章

vue 实现拖动

vue 实现拖动

实现拖动的核心方法 在Vue中实现拖动功能可以通过HTML5的拖放API或第三方库如vuedraggable。以下是两种常见方案的实现细节。 使用HTML5原生拖放API HTML5提供了dragg…

vue实现探探卡片

vue实现探探卡片

Vue 实现探探卡片效果 探探卡片的交互效果主要包括卡片堆叠、左右滑动、缩放和旋转动画。以下是基于 Vue 3 的实现方法: 核心组件结构 使用 v-for 渲染卡片列表,通过 CSS 绝对定位实现…

vue实现图片拖动

vue实现图片拖动

Vue 实现图片拖动的步骤 使用 HTML5 拖放 API 在 Vue 中实现图片拖动可以利用 HTML5 的拖放 API。通过 draggable 属性设置元素可拖动,监听 dragstart、dr…

vue实现动态卡片

vue实现动态卡片

实现动态卡片的基本思路 在Vue中实现动态卡片通常涉及数据绑定、循环渲染和交互逻辑。动态卡片的内容、样式或数量可以根据数据变化而更新。 数据驱动的卡片列表 使用v-for指令循环渲染卡片,数据存储在…

vue实现位移拖动

vue实现位移拖动

Vue 实现位移拖动的方法 使用鼠标事件实现拖动 在 Vue 中可以通过监听鼠标事件实现元素的位移拖动。需要监听 mousedown、mousemove 和 mouseup 事件来跟踪拖动过程。 &…

vue实现卡片左右滑动

vue实现卡片左右滑动

实现卡片左右滑动的方法 使用Vue实现卡片左右滑动可以通过多种方式,以下是几种常见的方法: 使用CSS和Touch事件 通过监听touchstart、touchmove和touchend事件,结合C…