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

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

相关文章

jquery 拖动

jquery 拖动

jQuery 拖动实现方法 jQuery本身不直接提供拖动功能,但可以通过结合jQuery UI或原生HTML5的拖放API实现。以下是两种常见方法: 使用jQuery UI实现拖动 jQuery…

vue实现向上拖动

vue实现向上拖动

Vue 实现向上拖动功能 实现向上拖动功能通常需要结合 Vue 的指令和事件处理,以及原生 JavaScript 的拖拽 API。以下是几种常见的方法: 使用 HTML5 拖放 API 通过 HTM…

vue实现拖动滑动

vue实现拖动滑动

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

vue实现位移拖动

vue实现位移拖动

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

vue实现可拖动插件

vue实现可拖动插件

Vue 实现可拖动功能的方法 使用原生 HTML5 拖放 API HTML5 提供了原生的拖放 API,可以通过 draggable 属性结合事件监听实现拖动功能。 <template>…

vue表格宽度拖动实现

vue表格宽度拖动实现

vue表格宽度拖动实现 在Vue中实现表格宽度拖动功能,可以通过监听鼠标事件并结合CSS样式调整来实现。以下是具体实现方法: 使用原生事件监听 创建一个可拖动的列分隔线,通过监听mousedown、…