当前位置:首页 > 前端教程

elementUI拖动

2026-03-06 01:52:10前端教程

elementUI 实现拖拽功能的方法

ElementUI 提供了 el-draggable 组件来实现拖拽功能,该组件基于 Sortable.js 封装。以下是具体实现方式:

安装依赖

确保项目中已安装 vuedraggableelement-ui

npm install vuedraggable element-ui --save

基础拖拽列表

在 Vue 组件中引入并使用 el-draggable

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

<script>
import { ElDraggable } from 'element-ui'
export default {
  components: { ElDraggable },
  data() {
    return {
      list: [
        { id: 1, name: 'Item 1' },
        { id: 2, name: 'Item 2' }
      ]
    }
  },
  methods: {
    handleEnd() {
      console.log('拖拽结束后的顺序:', this.list)
    }
  }
}
</script>

表格行拖拽

实现表格行的拖拽排序:

<template>
  <el-table :data="tableData" row-key="id">
    <el-table-column prop="name" label="Name"></el-table-column>
    <el-table-column label="操作">
      <template #default="scope">
        <el-draggable 
          v-model="tableData" 
          :options="{ handle: '.drag-handle' }"
        >
          <i class="drag-handle el-icon-rank"></i>
        </el-draggable>
      </template>
    </el-table-column>
  </el-table>
</template>

跨容器拖拽

实现不同容器间的元素拖拽交换:

<template>
  <div class="container">
    <el-draggable 
      v-model="listA" 
      group="items" 
      @change="logChange"
    >
      <div v-for="item in listA" :key="item.id">{{ item.name }}</div>
    </el-draggable>

    <el-draggable 
      v-model="listB" 
      group="items"
      @change="logChange"
    >
      <div v-for="item in listB" :key="item.id">{{ item.name }}</div>
    </el-draggable>
  </div>
</template>

拖拽回调事件

常用事件处理:

methods: {
  // 拖拽开始
  onStart(evt) {
    console.log('开始拖拽:', evt.item)
  },

  // 拖拽结束
  onEnd(evt) {
    console.log('结束拖拽:', evt.newIndex)
  },

  // 顺序变化
  onUpdate(evt) {
    console.log('新顺序:', this.list)
  }
}

样式优化

为拖拽元素添加视觉反馈:

elementUI拖动

.el-draggable {
  cursor: move;
  user-select: none;
}

.drag-handle {
  cursor: move;
  color: #409EFF;
}

/* 拖拽时的占位符样式 */
.sortable-chosen {
  background: #f5f7fa;
}

/* 拖拽时的克隆元素样式 */
.sortable-ghost {
  opacity: 0.5;
}

注意事项

  1. 确保 v-model 绑定的是数组类型数据
  2. 复杂数据结构需要指定 row-key 属性
  3. 跨容器拖拽必须设置相同的 group 名称
  4. 移动端需要额外处理触摸事件

通过以上方法可以快速实现 ElementUI 项目中的各种拖拽交互需求。实际开发中可根据具体场景调整配置参数和样式表现。

标签: 拖动elementUI
分享给朋友:

相关文章

vue实现组件拖动

vue实现组件拖动

Vue 实现组件拖动的几种方法 使用 HTML5 拖放 API HTML5 原生提供了拖放 API,可以通过 draggable 属性实现基础拖拽功能。在 Vue 中可以通过事件绑定实现交互逻辑。…

vue实现拖动div

vue实现拖动div

实现拖动 div 的基本思路 在 Vue 中实现拖动 div 的功能,可以通过监听鼠标事件(mousedown、mousemove、mouseup)来动态更新元素的位置。核心逻辑是记录初始点击位置,计…

vue实现拖动文件移动

vue实现拖动文件移动

Vue 实现文件拖动移动 实现文件拖动移动功能通常涉及 HTML5 的拖放 API 和 Vue 的事件处理。以下是具体实现方法: 基础拖放实现 在 Vue 组件中设置拖放区域并处理相关事件:…

vue实现边框高度拖动

vue实现边框高度拖动

实现边框高度拖动的核心思路 通过监听鼠标事件(mousedown、mousemove、mouseup)来实现拖动效果。在Vue中结合自定义指令或组件封装更为优雅。 基础实现方案(基于自定义指令) &…

vue中怎么实现拖动

vue中怎么实现拖动

实现拖动的核心方法 在Vue中实现拖动功能通常依赖HTML5的拖放API或第三方库。以下是两种主流实现方式: 使用HTML5原生拖放API 设置元素为可拖动 为需要拖动的元素添加draggable…

react如何实现表头拖动

react如何实现表头拖动

实现表头拖动的步骤 使用React实现表头拖动功能可以通过HTML5的拖放API结合React的状态管理来完成。以下是具体实现方法: 使用HTML5拖放API HTML5提供了原生的拖放API,可以…