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

vue中原生H5拖拽排序_拖拽图片也是同样的道理

原文地址【vue中原生H5拖拽排序_拖拽图片也是同样的道理】

H5有基于拖拽的事件机制,如果你还不熟悉,请看我之前的文章【拖拽上传】中有介绍。

原生拖拽API实现

由于比较简单直接上代码了:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>拖拽排序</title><script src="https://cdn.bootcdn.net/ajax/libs/vue/2.7.9/vue.min.js"></script><style>ul {clear: both;list-style: none;overflow: hidden;}li {cursor: pointer;float: left;height: 32px;line-height: 30px;padding: 0 10px;color: #409eff;border: 1px solid #d9ecff;background-color: #ecf5ff;}</style>
</head><body><div id="app"></div><script>new Vue({template: `<div><h1 style="padding-left: 30px;">连词成句</h1><ul><li v-for="(item,index) in list" :key="index" draggable="true" @dragstart="dragstart(item)"@dragenter="onDragEnter(item,$event)" @dragend="onDragEnd">{{item}}</li></ul></div>`,el: '#app',data() {return {oldWord: null,newWord: null,list: ["校长", "爷爷", "我", "给", "唱了首歌"]}},methods: {dragstart(word) {this.oldWord = word},// 记录移动过程中信息onDragEnter(word, e) {this.newWord = worde.preventDefault()},// 拖拽结束onDragEnd() {if (this.oldWord !== this.newWord) {let oldWordIndex = this.list.indexOf(this.oldWord);let newWordIndex = this.list.indexOf(this.newWord);let newList = [...this.list];// 删除老的节点newList.splice(oldWordIndex, 1);// 在列表中目标位置增加新的节点newList.splice(newWordIndex, 0, this.oldWord);this.list = [...newList];}}}})</script>
</body></html>

效果如下:

请添加图片描述

使用vuedraggable实现拖拽排序

vuedraggable 是基于sortable.js实现的,所以需要先引入sortable.js,如果是npm安装的,则无需再引入。

使用起来也比较简单,代码如下

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>拖拽排序</title><script src="https://cdn.bootcdn.net/ajax/libs/vue/2.7.9/vue.min.js"></script><script src="//cdn.jsdelivr.net/npm/sortablejs@1.8.4/Sortable.min.js"></script><script src="//cdnjs.cloudflare.com/ajax/libs/Vue.Draggable/2.20.0/vuedraggable.umd.min.js"></script><style>ul {clear: both;list-style: none;overflow: hidden;}li {cursor: pointer;float: left;height: 32px;line-height: 30px;padding: 0 10px;color: #409eff;border: 1px solid #d9ecff;background-color: #ecf5ff;}</style>
</head><body><div id="app"></div><script>let draggable = vuedraggable;new Vue({components: {draggable},template: `<div><h1 style="padding-left: 30px;">连词成句</h1><ul><draggable v-model="list" group="people" @start="drag=true" @end="drag=false"><li v-for="(item,index) in list" :key="index">{{item}}</li></draggable></ul></div>`,el: '#app',data() {return {drag: false,list: ["校长", "爷爷", "我", "给", "唱了首歌"]}}})</script>
</body></html>

参考资料

  • 拖拽上传
  • vue中使用vuedraggable实现图片的拖拽排序
  • 基于vue element-ui 封装上传图片组件 功能:上传,删除,预览,上传图片水印,拖拽排序,上传进度条等
http://www.lryc.cn/news/239251.html

相关文章:

  • 【C语言】计算实时太阳角度(高度角、方位角),以及使用stm32单片机实时获取时间戳
  • 创建git仓库
  • 19.悲观锁与乐观锁解析
  • C语言--给出一个点的坐标判断它在单位圆的内部外部还是上面
  • 变频器基础问答集21-50
  • OpenCvSharp从入门到实践-(01)认识OpenCvSharp开发环境搭建
  • OSG文字-渐变文字(4)
  • 排查生产环境:MySQLTransactionRollbackException数据库死锁
  • 140.【鸿蒙OS开发-01】
  • npm install 下载不下来依赖解决方案
  • 接口自动化中cookies的处理技术
  • PHP 安装
  • 小程序常见操作
  • STM32F4串口USART发送为00的解决方案
  • 重磅解读 | 阿里云 云网络领域关键技术创新
  • 【蓝桥杯省赛真题45】Scratch九宫格游戏 蓝桥杯scratch图形化编程 中小学生蓝桥杯省赛真题讲解
  • 物联网AI MicroPython学习之语法 ADC数模模块
  • 详解Python中哈希表的使用。站在开发者角度,与大家一起探究哈希的世界。
  • 详解python淘宝秒杀抢购脚本程序实现
  • 使用ChatGPT创建Makefile构建系统:使用Make运行Docker
  • 算法设计与分析复习--分支界限法
  • Https攻击怎么防御
  • 网络知识学习(笔记二)
  • 万字解析设计模式之组合模式、亨元模式
  • HTTP之常见问答
  • java伪共享问题
  • 【Ubuntu】Ubuntu arm64 部署 Blazor Server 应用
  • Android加固为何重要?很多人不学
  • 【C/PTA】函数专项练习(一)
  • SUDS: Scalable Urban Dynamic Scenes