当前位置:首页 > VUE

vue实现卡片拖动

2026-02-19 03:24:40VUE

Vue 实现卡片拖动

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

使用 HTML5 拖放 API

HTML5 提供了原生的拖放 API,可以直接在 Vue 中实现卡片拖动功能。

vue实现卡片拖动

<template>
  <div 
    class="card" 
    draggable="true" 
    @dragstart="handleDragStart" 
    @dragover.prevent 
    @drop="handleDrop"
  >
    {{ cardContent }}
  </div>
</template>

<script>
export default {
  data() {
    return {
      cardContent: "拖动我",
    };
  },
  methods: {
    handleDragStart(e) {
      e.dataTransfer.setData("text/plain", this.cardContent);
    },
    handleDrop(e) {
      e.preventDefault();
      const data = e.dataTransfer.getData("text/plain");
      this.cardContent = data;
    },
  },
};
</script>

<style>
.card {
  width: 100px;
  height: 100px;
  background: #f0f0f0;
  border: 1px solid #ccc;
  cursor: move;
}
</style>
  • draggable="true":启用元素的拖动功能。
  • @dragstart:拖动开始时触发,用于设置拖动的数据。
  • @dragover.prevent:阻止默认行为以允许放置。
  • @drop:放置时触发,用于处理放置逻辑。

使用 vuedraggable

vuedraggable 是基于 Sortable.js 的 Vue 拖拽组件,适合实现复杂的拖拽列表或卡片功能。

vue实现卡片拖动

安装依赖:

npm install vuedraggable

示例代码:

<template>
  <draggable 
    v-model="cards" 
    @end="onDragEnd"
  >
    <div v-for="card in cards" :key="card.id" class="card">
      {{ card.content }}
    </div>
  </draggable>
</template>

<script>
import draggable from "vuedraggable";

export default {
  components: { draggable },
  data() {
    return {
      cards: [
        { id: 1, content: "卡片1" },
        { id: 2, content: "卡片2" },
        { id: 3, content: "卡片3" },
      ],
    };
  },
  methods: {
    onDragEnd() {
      console.log("拖动后的顺序:", this.cards);
    },
  },
};
</script>

<style>
.card {
  width: 100px;
  height: 100px;
  background: #f0f0f0;
  margin: 5px;
  border: 1px solid #ccc;
}
</style>
  • v-model:绑定数据,拖动时会自动更新数组顺序。
  • @end:拖动结束时触发,可用于处理后续逻辑。

注意事项

  1. 兼容性:HTML5 拖放 API 在现代浏览器中支持良好,但在移动端可能需要额外处理。
  2. 性能:对于大量卡片,使用 vuedraggable 性能更优。
  3. 自定义样式:可以通过 CSS 调整拖动时的视觉效果(如阴影、透明度)。

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

相关文章

vue实现拖动

vue实现拖动

Vue实现拖动的常用方法 在Vue中实现拖动功能通常需要结合HTML5的拖放API或第三方库。以下是几种常见实现方式: 使用HTML5原生拖放API HTML5提供了原生拖放API,可以通过drag…

uniapp 卡片效果

uniapp 卡片效果

uniapp 实现卡片效果的方法 使用 view 和 CSS 样式 通过 view 组件结合 CSS 样式可以快速实现卡片效果。设置圆角、阴影和边距来增强视觉层次感。 <view cl…

js实现 拖动

js实现 拖动

实现拖动的步骤 HTML 结构 创建一个可拖动的元素和一个放置区域: <div id="draggable" draggable="true">拖动我</div> <d…

vue实现位移拖动

vue实现位移拖动

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

vue实现删除卡片

vue实现删除卡片

实现删除卡片功能 在Vue中实现删除卡片功能通常涉及以下几个关键步骤: 数据绑定与列表渲染 使用v-for指令渲染卡片列表,确保每个卡片有唯一标识符(通常为id): <div v-for="…

vue实现双列商品卡片

vue实现双列商品卡片

Vue 实现双列商品卡片 使用 Vue 实现双列商品卡片可以通过 flex 布局或 grid 布局实现,以下是两种常见方法: 方法一:使用 Flex 布局 <template>…