当前位置: 首页 > news >正文

前端vue3 web端中实现拖拽功能实现列表排序

类似这样的我现在要实现能够拖拽 直接能够让这个列表项 切换顺序

我们可以使用前端库 也可以使用原生自带的功能

我直接贴代码了

template

<el-form-item label="选择书籍:" class="book-select-container"> <div class="booklist-container" ref="bookList"> <div class="book-item" v-for="(item, index) in selectBookList" :key="item.id" :draggable="true" @dragstart="onBookDragStart($event, index)" @dragover.prevent="onBookDragOver($event, index)" @drop="onBookDrop($event, index)" @dragenter="onBookDragEnter($event, index)" @dragleave="onBookDragLeave($event, index)" > <div class="index"> <div class="nnumber">{{ index + 1 }}</div> </div> <div class="novelName">{{ item.novelName }}</div> </div> </div> </el-form-item>

script

// 书籍拖拽相关函数 const onBookDragStart = (event, index) => { event.dataTransfer.setData('text/plain', index.toString()) event.target.classList.add('dragging') } const onBookDragOver = (event, index) => { event.preventDefault() event.currentTarget.classList.add('drag-over') } const onBookDragEnter = (event, index) => { event.preventDefault() } const onBookDragLeave = (event, index) => { event.currentTarget.classList.remove('drag-over') } const onBookDrop = (event, index) => { event.preventDefault() event.currentTarget.classList.remove('drag-over') const dragIndex = parseInt(event.dataTransfer.getData('text/plain')) const dropIndex = index if (dragIndex !== dropIndex) { const itemToMove = selectBookList.value[dragIndex] selectBookList.value.splice(dragIndex, 1) selectBookList.value.splice(dropIndex, 0, itemToMove) // 触发响应式更新 selectBookList.value = [...selectBookList.value] ElMessage.success('书籍顺序已调整') } // 移除拖拽类 document.querySelectorAll('.book-item').forEach(el => { el.classList.remove('dragging') }) }

这个是最简单的 一个模板了

至于说样式的开发 就看怎么写了 原声的拖拽就是这样写的

不使用任何第三方库,纯原生HTML5拖拽API

http://www.gsyq.cn/news/111123.html

相关文章:

  • 《深入理解 Ascend C:华为昇腾 AI 处理器的高效编程语言》
  • 广东省考备考三要素(喻明公考)
  • 【Docker MCP 网关服务注册全解析】:掌握微服务动态注册核心技术
  • 2025行业盘点追踪,迈向生产级医疗AI:三大核心实践趋势的落地路径分析
  • 提高 CHO 细胞蛋白表达量?Cytiva HyClone 培养基是优选!
  • 【农业产量预测新突破】:基于R语言的气候影响深度分析与实战模型构建
  • 数据结构(一)———线性表之顺序表、单向链表
  • 机器视觉系统中光源的相关行业术语解读
  • 实战 Ascend C:从零实现高性能自定义算子
  • [吾爱大神原创工具] FlowMouse - 心流鼠标手势 v1.0【Chrome浏览器插件】
  • 【量子计算镜像优化终极指南】:3步实现依赖精简与性能飞跃
  • Docker Compose Agent服务监控最佳实践(健康检查配置全解析)
  • 为什么90%的生物信息分析师都在用R做RNA结构研究?真相令人震惊
  • 加密PDF的Dify解密算法(20年专家私藏方案曝光)
  • AutoGLM无需豆包手机,让AI自动帮你点外卖-刷视频
  • 空间转录组降维必杀技:5步用R语言完成PCA、t-SNE与UMAP优化
  • 45分以下也能拿证!软考的三类合格标准!
  • 揭秘气候极端事件背后真相:如何用R语言完成高精度归因分析
  • Java逻辑运算符介绍_Java基础_Java秘诀
  • 杰理之IIS输入-长时间播放-概率无声【篇】
  • 杰理之部分WAV歌曲会误识别成DTS格式解码【篇】
  • Python期末复习:30个核心知识点完全详解
  • AI 手机技术拆解:豆包手机 vs AutoGLM,两条“AI 手机”技术路线深度拆解
  • Dify对接Spring AI总失败?一文看懂版本依赖的4大雷区
  • 吉时利DMM7510 DMM6500数字万用表
  • 【珍藏版】AI大模型学习路线大全:从入门到精通,附104G免费资源包
  • 揭秘R Shiny多模态报告生成:如何在5步内构建高可用、可复用的智能报告系统
  • 为什么99%的量子计算项目忽略镜像缓存?这3个致命后果你承担得起吗?
  • 阿里开源的Mobile-Agent:让AI帮你操作手机电脑,这个工具太强了
  • (Dify权限校验避坑指南):那些官方文档不会告诉你的细节