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

elementui拖拽

2026-03-06 01:49:00前端教程

使用 Element UI 实现拖拽功能

Element UI 本身不直接提供拖拽组件,但可以通过集成第三方库(如 vuedraggable)或 HTML5 原生拖拽 API 实现。以下是两种常见方法:

方法一:使用 vuedraggable 实现列表拖拽

vuedraggable 是基于 Sortable.js 的 Vue 拖拽库,适合实现列表项的拖拽排序。

  1. 安装依赖 确保项目中已安装 vuedraggable

    npm install vuedraggable
  2. 基础示例代码

    <template>
      <el-card>
        <draggable v-model="list" @end="onDragEnd">
          <div v-for="item in list" :key="item.id" class="draggable-item">
            {{ item.name }}
          </div>
        </draggable>
      </el-card>
    </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>
    
    <style>
    .draggable-item {
      padding: 12px;
      margin: 8px 0;
      background: #f5f7fa;
      border: 1px dashed #dcdfe6;
      cursor: move;
    }
    </style>
  3. 关键配置

    • v-model:绑定拖拽的数据数组。
    • @end:拖拽结束事件回调。
    • 可通过 group 属性实现跨列表拖拽。

方法二:HTML5 原生拖拽 API

适用于自定义拖拽逻辑,如拖拽上传或非列表场景。

  1. 示例:拖拽上传文件

    <template>
      <el-upload
        action="https://example.com/upload"
        drag
        multiple
        :auto-upload="false"
        @change="handleFileChange"
      >
        <i class="el-icon-upload"></i>
        <div class="el-upload__text">将文件拖到此处或<em>点击上传</em></div>
      </el-upload>
    </template>
    
    <script>
    export default {
      methods: {
        handleFileChange(file, fileList) {
          console.log('已选择文件:', file);
        },
      },
    };
    </script>
  2. 说明

    elementui拖拽

    • drag 属性启用拖拽区域。
    • auto-upload="false" 禁止自动上传,需手动触发。

注意事项

  • 兼容性:HTML5 拖拽 API 在移动端支持较差,优先使用 vuedraggable
  • 性能:大数据量拖拽时,建议使用虚拟滚动(如 el-table 结合拖拽)。
  • 样式调整:拖拽过程中可通过 CSS 类名(如 .sortable-chosen)自定义视觉效果。

通过以上方法,可以灵活实现 Element UI 项目中的拖拽需求。

标签: 拖拽elementui
分享给朋友:

相关文章

vue拖拽实现

vue拖拽实现

Vue 拖拽实现方法 使用 HTML5 原生拖拽 API HTML5 提供了原生拖拽 API,可以通过 draggable 属性、dragstart、dragend、dragover 和 drop 事…

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document.…

elementui table

elementui table

ElementUI Table 基本用法 ElementUI 的 Table 组件用于展示结构化数据,支持排序、筛选、分页等功能。以下是一个基础示例: <template> &l…

拖拽实现vue

拖拽实现vue

实现拖拽功能的基本思路 在Vue中实现拖拽功能可以通过HTML5的Drag and Drop API或第三方库如vuedraggable来完成。以下是两种常见方法的详细说明。 使用HTML5 Dra…

elementui nuxt

elementui nuxt

在 Nuxt.js 中使用 Element UI Element UI 是一个基于 Vue.js 的组件库,适用于开发后台管理系统。在 Nuxt.js 项目中集成 Element UI 需要一些额外配…

elementui引用

elementui引用

安装 Element UI 在项目中通过 npm 或 yarn 安装 Element UI: npm install element-ui --save # 或 yarn add element…