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

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)
  }
}

样式优化

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

.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拖动

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

相关文章

react elementUI

react elementUI

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

vue实现拖动刻度

vue实现拖动刻度

实现拖动刻度功能 在Vue中实现拖动刻度功能可以通过结合原生HTML5的拖拽API和Vue的数据绑定特性来完成。以下是一个完整的实现方案: 基本实现思路 创建一个可拖动的滑块元素 监听鼠标事件处理拖…

vue实现组件拖动

vue实现组件拖动

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

vue实现拖动宽度

vue实现拖动宽度

Vue 实现拖动调整宽度 在 Vue 中实现拖动调整宽度可以通过监听鼠标事件和使用 CSS 样式来实现。以下是具体实现方法: 使用鼠标事件监听 创建一个可拖动的分隔条,通过监听 mousedow…

vue实现可拖动

vue实现可拖动

Vue 实现可拖动功能 在 Vue 中实现可拖动功能通常可以通过原生 HTML5 的拖放 API 或第三方库如 vuedraggable 来完成。以下是两种方法的详细说明: 使用 HTML5 拖放…

vue实现鼠标拖动多选

vue实现鼠标拖动多选

Vue 实现鼠标拖动多选框 基本思路 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖动选区,结合动态计算选中元素的范围完成多选功能。核心是记录起始位置和当前鼠标位置,…