当前位置:首页 > 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实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的HT…

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js实现轮播代码

js实现轮播代码

基础轮播实现 使用HTML、CSS和JavaScript创建一个简单的轮播效果。HTML部分定义轮播容器和图片元素。 <div class="carousel"> <div c…

js验证码实现

js验证码实现

验证码的基本原理 验证码(CAPTCHA)用于区分人类用户和自动化程序。常见类型包括图形验证码、滑动验证码、短信验证码等。JavaScript 可用于前端验证码的生成和验证逻辑。 图形验证码实现 使…

js实现图片移动

js实现图片移动

使用CSS和JavaScript实现图片移动 方法一:使用CSS动画结合JavaScript控制 通过CSS定义动画关键帧,JavaScript动态添加或移除动画类。 /* CSS部分 */ .m…