news 2026/4/23 17:37:55

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
前端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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 8:21:34

鸿蒙常用组件

常用组件 文本组件&#xff08;Text&#xff09; Text是显示文本的基础组件之一 Text定义介绍 interface TextInterface{(content?: string | Resource):TextAttributes; }content&#xff1a;要显示的文本内容&#xff0c;一个简单的例子如下&#xff1a; Text(Hello&#xf…

作者头像 李华
网站建设 2026/4/23 8:22:58

为什么你的视频搜索总不准?:一文搞懂字幕相似度阈值设定

第一章&#xff1a;为什么你的视频搜索总不准&#xff1f;——字幕相似度阈值的隐形影响 在现代视频内容平台中&#xff0c;用户依赖关键词搜索来定位特定片段&#xff0c;但即使输入准确关键词&#xff0c;返回结果仍可能不理想。问题的核心常被忽视&#xff1a;字幕文本匹配过…

作者头像 李华
网站建设 2026/4/23 9:56:13

《深入理解 Ascend C:华为昇腾 AI 处理器的高效编程语言》

摘要 随着人工智能模型规模的爆炸式增长&#xff0c;传统 CPU 和通用 GPU 在推理和训练任务中逐渐暴露出能效比低、延迟高等问题。为应对这一挑战&#xff0c;专用 AI 加速器成为行业主流方向。华为昇腾&#xff08;Ascend&#xff09;系列 AI 处理器正是在此背景下应运而生。…

作者头像 李华
网站建设 2026/4/23 9:57:50

数据结构(一)———线性表之顺序表、单向链表

一、线性表线性表是n 个数据类型相同的元素组成的有限序列&#xff08;n≥0&#xff0c;n0 时叫 “空表”&#xff09;&#xff08;1&#xff09;特点有唯一的 “第一个元素” 和 “最后一个元素”除第一个元素外&#xff0c;每个元素只有一个前驱&#xff1b;除最后一个元素外…

作者头像 李华
网站建设 2026/4/23 9:52:40

《Ascend C 高级优化实战:从理论到工业级部署》

摘要在掌握 Ascend C 基础之后&#xff0c;如何将其应用于真实场景并实现工业级性能&#xff1f;本文聚焦 高级优化技术&#xff0c;深入剖析昇腾 NPU 的微架构特性&#xff0c;结合 GEMM、Attention、Conv 等典型算子&#xff0c;系统讲解 数据布局优化、计算融合、流水线调度…

作者头像 李华
网站建设 2026/4/23 9:55:52

《Ascend C 高级优化:GELU、LayerNorm 实现与算子融合实战》

1. 为什么优化 GELU 和 LayerNorm&#xff1f;以 LLaMA-7B 为例&#xff1a;每层包含 2 个 GELU&#xff08;FFN 中&#xff09;和 2 个 LayerNorm共 32 层 → 单次前向传播调用 128 次若每次节省 1μs&#xff0c;则每 token 节省 128μs在千亿 token 推理场景中&#xff0c;这…

作者头像 李华