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

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
分享给朋友:

相关文章

react elementUI

react elementUI

React 和 Element UI 是两个不同的技术栈,但可以通过整合实现类似功能。以下是相关解决方案和替代方案: React 与 Element UI 的替代方案 Element UI 是为 V…

js实现图片拖动

js实现图片拖动

实现图片拖动的步骤 使用JavaScript实现图片拖动功能,可以通过HTML5的拖放API结合事件监听实现。以下是具体方法: 设置HTML结构 为图片添加draggable属性,并设置唯一ID以便…

vue实现拖动滑动

vue实现拖动滑动

Vue 实现拖动滑动 使用原生 HTML5 拖放 API 在 Vue 中可以通过 @dragstart、@dragover、@drop 等事件实现基础的拖放功能。以下是一个简单的拖放示例: <…

vue实现卡片拖动

vue实现卡片拖动

Vue 实现卡片拖动的几种方法 使用 HTML5 拖放 API HTML5 提供了原生的拖放 API,可以在 Vue 中直接使用。通过 draggable 属性标记可拖动的元素,并监听 dragsta…

vue实现位移拖动

vue实现位移拖动

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

vue实现拖动图片思路

vue实现拖动图片思路

Vue 实现拖动图片的思路 在 Vue 中实现图片拖动功能,可以通过以下方法实现: 使用 HTML5 拖放 API HTML5 提供了原生的拖放 API,可以通过 draggable 属性和相关事件…