当前位置:首页 > JavaScript

js实现vuedraggable

2026-02-01 09:45:37JavaScript

实现 VueDraggable 的 JavaScript 方法

VueDraggable 是一个基于 Sortable.js 的 Vue 组件,用于实现拖拽排序功能。以下是实现方法:

安装依赖

npm install vuedraggable

基本用法示例

在 Vue 组件中引入并使用:

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

<script>
import draggable from 'vuedraggable'

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

常用配置选项

可以通过 options 属性传递 Sortable.js 的配置:

<draggable 
  v-model="list" 
  :options="{ 
    animation: 150,
    handle: '.handle',
    ghostClass: 'ghost'
  }"
>
  <div v-for="item in list" :key="item.id">
    <span class="handle">≡</span>
    {{ item.name }}
  </div>
</draggable>

跨列表拖拽

实现两个列表间的拖拽功能:

<template>
  <div class="container">
    <draggable 
      v-model="list1" 
      group="shared" 
      @change="log"
    >
      <div v-for="item in list1" :key="item.id">{{ item.name }}</div>
    </draggable>

    <draggable 
      v-model="list2" 
      group="shared" 
      @change="log"
    >
      <div v-for="item in list2" :key="item.id">{{ item.name }}</div>
    </draggable>
  </div>
</template>

自定义样式

添加拖拽时的视觉效果:

.ghost {
  opacity: 0.5;
  background: #c8ebfb;
}
.sortable-chosen {
  background: #f0f0f0;
}

进阶功能

实现克隆功能和非拖拽元素:

js实现vuedraggable

<draggable 
  v-model="list"
  :options="{
    group: {
      name: 'shared',
      pull: 'clone'
    },
    sort: false
  }"
>
  <div v-for="item in list" :key="item.id">
    {{ item.name }}
  </div>
</draggable>

注意事项

  1. 确保为每个拖拽项设置唯一的 key
  2. 使用 v-model 绑定数组会自动更新顺序
  3. 复杂场景可以使用 list prop 和 move 事件手动控制
  4. 移动端需要额外处理触摸事件

通过以上方法可以灵活实现各种拖拽排序需求,从简单列表到复杂的跨容器拖拽场景。

标签: jsvuedraggable
分享给朋友:

相关文章

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js怎么实现异步

js怎么实现异步

异步实现方法 JavaScript中实现异步操作主要通过以下几种方式: Promise Promise是ES6引入的异步解决方案,用于处理异步操作的成功或失败状态。 const promise =…

js实现文字滚动

js实现文字滚动

实现文字滚动的几种方法 使用CSS动画实现滚动 通过CSS的@keyframes和transform属性可以实现平滑的文字滚动效果。 <style> .scroll-text { w…

js实现滚动

js实现滚动

实现滚动效果的方法 在JavaScript中实现滚动效果可以通过多种方式完成,以下是一些常见的方法: 使用window.scrollTo() window.scrollTo()方法可以将页面滚动到指…

js实现显示隐藏

js实现显示隐藏

显示隐藏的实现方法 在JavaScript中,实现元素的显示和隐藏可以通过多种方式完成。以下是几种常见的方法: 修改CSS的display属性 通过改变元素的display属性可以在none(隐藏)…

js实现 拖动

js实现 拖动

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