微信小程序通过 movable-area 做一个与vuedraggable相似的上下拖动排序控件
因为只是做个小案例 我就直接代码写page页面里了 其实很简单 组件稍微改一下就好了
wxss
/* 设置movable-area的宽度 */
.area{width: 100%;
}/* a b c 每条元素的样式 */
movable-view {width: 100%;background-color: red;height: 40px;line-height: 40px;color: #FFFFFF;text-align: center;
}
都是些基本样式 也没什么好讲的 但是 这里我js中用了很多px的计算代码 大家最好还是看清楚再改 不然 rpx和px对不上问题还是很大的
js代码
Page({data: {//排序元素集合list: [{ text: 'a', id: 0, top: 0 },{ text: 'b', id: 1, top: 0 },{ text: 'c', id: 2, top: 0 }],//整个元素的高度totalHeight: 0,//控制协助movable-area 元素重新渲染reload: true},onLoad: function () {//调用初始化函数this.initialization();},//将指定元素 在数组中后移一个下标moveElementBackward(arr, index) {if((index + 1) === arr.length) {return arr}const element = arr[index];arr.splice(index, 1);arr.splice(index + 1, 0, element);return arr;},//将指定元素 在数组中前移一个下标moveIndexForward(arr, index) {if(index == 0){return arr}// 创建一个空数组 存储更改后的结构var newArr = Array.from(arr);// 获取要前移的两个下标的值var value1 = newArr[index];var value2 = newArr[index - 1];// 交换两个元素的位置newArr[index] = value2;newArr[index - 1] = value1;return newArr;},initialization() {let list = this.data.listif(!list.length) {return}list = list.map((item,index) => {item.top = (index*50)return item})this.setData({list: list,totalHeight: list.length*50,reload: true})},handleTouchEnd() {//先将reload 改为false 让movable-area wxif不生效 强制移除this.setData({reload: false})//等待想试试数据生效修改后 调用初始化函数wx.nextTick(() => {this.initialization();})},//当用户拖动某块元素时触发handleTouchMove: function (event) {//获取到当前用拖动的是第几个元素const index = event.currentTarget.dataset.index//获取到 y 轴 就是 上下拖动的距离const currentY = event.touches[0].clientY//定义一个list 接受tata中的listconst list = this.data.list// 通过index 从list 集合中找到当前元素 对比 top和拖动的高度if(currentY > (list[index].top+70)) {// 如果比起之前 乡下了 70还要多 直接 调用 向后移动一个下标的函数const newArray = this.moveElementBackward(list, index);//调用setData 修改函数 修改 data中的 list 换成我们新处理好的函数this.setData({list: newArray})//等待 响应式数据修改并生效后再执行的nextTickwx.nextTick(() => {//调用初始化函数this.initialization();})}else if(currentY < (list[index].top-20)) {const newArray = this.moveIndexForward(list, index);this.setData({list: newArray})//等待 响应式数据修改并生效后再执行的nextTickwx.nextTick(() => {//调用初始化函数this.initialization();})}}
});
我的注释还是写的非常认真的 大家可以好好读一读
然后 wxml 没什么特别的 就是渲染一下list
<movable-areaclass = "area"style = "height: {{totalHeight}}px;"wx:if="{{ reload }}"
><movable-viewwx:for="{{list}}"wx:key="id"data-index="{{index}}"y="{{item.top}}"direction="all"bindtouchmove="handleTouchMove"bindtouchend="handleTouchEnd">{{item.text}}</movable-view>
</movable-area>

这样 我们就做了一个 可以上下拖动元素排序的小案例了

效果也是非常不错的
相关文章:
微信小程序通过 movable-area 做一个与vuedraggable相似的上下拖动排序控件
因为只是做个小案例 我就直接代码写page页面里了 其实很简单 组件稍微改一下就好了 wxss /* 设置movable-area的宽度 */ .area{width: 100%; }/* a b c 每条元素的样式 */ movable-view {width: 100%;background-color: red;height: 40px;line-height: 40px;color: #FFFFFF;tex…...
Ceph入门到精通-Nginx超时参数分析设置
nginx中有些超时设置,本文汇总了nginx中几个超时设置 Nginx 中的超时设置包括: “client_body_timeout”:设置客户端向服务器发送请求体的超时时间,单位为秒。 “client_header_timeout”:设置客户端向服务器发送请…...
TCP/IP(十)TCP的连接管理(七)CLOSE_WAIT和TCP保活机制
一 CLOSE_WAIT探究 CLOSE_WAIT 状态出现在被动关闭方,当收到对端FIN以后回复ACK,但是自身没有发送FIN包之前 ① 服务器出现大量 CLOSE_WAIT 状态的原因有哪些? 1、通常来讲,CLOSE_WAIT状态的持续时间应该很短,正如SYN_RCVD状态2、但是在一些特殊情况下,就会出现大量连接长…...
LeetCode 面试题 08.10. 颜色填充
文章目录 一、题目二、C# 题解 一、题目 编写函数,实现许多图片编辑软件都支持的「颜色填充」功能。 待填充的图像用二维数组 image 表示,元素为初始颜色值。初始坐标点的行坐标为 sr 列坐标为 sc。需要填充的新颜色为 newColor。 「周围区域」是指颜色相…...
内排序算法
排序算法是面试中常见的问题,不同算法的时间复杂度、稳定性和适用场景各不相同。按照数据量和存储方式可以将排序算法分为 内排序(Internal Sorting)和 外排序(External Sorting)。 内排序是指对所有待排序的数据都可…...
options.html 页面设计成聊天框,左侧是功能列表,右侧是根据左侧的功能切换成不同的内容。--chatGpt
gpt: 要将 options.html 页面设计成一个聊天框式的界面,其中左侧是功能列表,右侧根据左侧的功能切换成不同的内容,你可以按照以下步骤进行设计和实现: 1. 首先,创建 options.html 文件,并在其中定义基本的…...
排序算法-选择排序法(SelectionSort)
排序算法-选择排序法(SelectionSort) 1、说明 选择排序法也是枚举法的应用,就是反复从未排序的数列中取出最小的元素,加入另一个数列中,最后的结果即为已排序的数列。选择排序法可使用两种方式排序,即在所…...
Java-集合框架
文章目录 摘要CollectionCollection集合遍历Iterator迭代器增强for循环 排序 ListArrayListLinkedListVector SetHashSet Map小结 摘要 Java的集合框架提供了一组用于存储、管理和操作数据的类和接口。这个框架提供了各种数据结构,如列表、集合、队列和映射&#x…...
联想携中国移动打造车路协同方案 助力重庆实现32类车联网场景
10月11日,联想集团在中国移动全球合作伙伴大会上首次分享了与中国移动等合作伙伴共同打造的5G车路协同案例——重庆两江协同创新区车路协同应用。联想利用基于5G智能算力技术,在总里程55公里路段实现了32类车联网场景。 据了解,重庆两江协同创…...
Rust入门基础
文章目录 Rust相关介绍为什么要用Rust?Rust的用户和案例 开发环境准备安装Rust更新与卸载Rust开发工具 Hello World程序编写Rust程序编译与运行Rust程序 Cargo工具Cargo创建项目Cargo构建项目Cargo构建并运行项目Cargo检查项目Cargo为发布构建项目 Rust相关介绍 为…...
民族民俗景区3d智慧旅游系统提升游客旅游体验和质量
随着科技的不断发展,传统的旅游方式正在逐渐被新的技术和系统所取代。网上3D沉浸式旅游体验凭借其身临其境的沉浸式体验优势,正成为旅游业的新宠。 网上3D沉浸式旅游体验是将旅游景区、度假区、休闲街区、科博馆等场所空间,利用VR全景制作、w…...
Webpack 解决:Error: error:0308010C:digital envelope routines::unsupported 的问题
1、问题描述: 其一、报错为: Error: error:0308010C:digital envelope routines::unsupported 中文为: 错误:错误:0308010C:数字信封例程::不支持 其二、问题描述为: 在项目打包的时候 np…...
JAVA操作Json的ObjectMapper类
JAVA操作Json的ObjectMapper类 市面上用于在 Java 中解析 Json 的第三方库,随便一搜不下几十种,其中的佼佼者有 Google 的 Gson以及本文的 jackson。 三者不相伯仲,随着掌握一个都能满足项目中的 json 解析操作,因为 Spring Boot…...
Docker--harbor
一,registry registry是私有仓库的核心,只有字符终端。 二,registry部署 #首先下载 registry 镜像 docker pull registry#在 daemon.json 文件中添加私有镜像仓库地址 vim /etc/docker/daemon.json {"insecure-registries": [&q…...
Flink中的时间和窗口
1.Flink的时间和窗口 在传统的批处理系统中,我们可以等到一批数据全部都到齐了之后,对其做相关的计算;但是在实时处理系统中,数据是源源不断的,正常情况下,我们就得来一条处理一条。那么,我们应…...
Ultra-Fast-Lane-Detection 车道线学习资料整理
目录 官方版本 两个优化 数据标注,降低参数量 1 数据标注 2降低参数量...
【Ubuntu】Ubuntu18.04终端卡顿问题
博主您好,我也遇到了类似的问题,但我找到了问题的原因: 在gnome-terminal中,按tab补全是默认开启了“咚咚咚”音效的,在gnome-terminal里把音效关掉就好了,主要是因为按tab时,NVIDIA的视频信号和…...
k8s强制删除pod、svc、namespace(Terminating)
如果名称空间、pod、pv、pvc全部处于“Terminating”状态时,此时的该名称空间下的所有控制器都已经被删除了,之所以出现pod、pvc、pv、ns无法删除,那是因为kubelet 阻塞,有其他的资源在使用该namespace,比如CRD等&…...
froeach迭代删除和List迭代删除问题
场景:我有一个 List<ISSLogMessage> records 数据,需要从里面删除指定内容数据 第一次写成 foreach(var item in records) {if (item.logMessage.Contains("上传通行记录"))records.Remove(item); } 直接报错,因为foreach 是个迭代器 直接移除它的对象会报…...
chromedriver下载地址
ChromeDriver下载地址: 淘宝镜像:https://registry.npmmirror.com/binary.html?pathchromedriver/ 官方镜像:https://sites.google.com/a/chromium.org/chromedriver/downloads在下载页面上,将看到一列Chrome浏览器的版本号和相…...
为什么 Transformer 这么强?——对比 CNN 和 RNN(Version B)
为什么 Transformer 这么强?——对比 CNN 和 RNN(Version B) 📚 《从零到一造大脑:AI架构入门之旅》专栏 专栏定位:面向中学生、大学生和 AI 初学者的科普专栏,用大白话和生活化比喻带你从零理解…...
从Dirty COW到内核攻防:竞态条件漏洞的现代利用与防御思考
1. Dirty COW漏洞:一个潜伏十年的"定时炸弹" 2016年10月,一个名为Dirty COW的Linux内核漏洞震惊了整个安全界。这个漏洞的特殊之处在于,它从2007年就潜伏在Linux内核中,历经近十年才被发现。更可怕的是,它影…...
PCIe C++代理实例化
为了能调用PCIe AVIP的C用户接口,先要在C仿真文件中对PCIe C代理做一个实例化声明。PCIe C代理负责两件事:从C仿真程序获得事务报文,并将其通过信号接口发送给BFM。从信号接口接收事务响应报文,并将其发送给C仿真程序。注意&#…...
跨平台资源下载终极方案:res-downloader如何破解多平台内容获取难题
跨平台资源下载终极方案:res-downloader如何破解多平台内容获取难题 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader …...
你的手机‘出卖’了你:从加速度传感器到麦克风,揭秘硬件动态特征如何生成唯一设备指纹
手机硬件的隐秘指纹:从传感器偏差到声纹特征的唯一身份标识 当你在咖啡店用手机支付时,是否想过这台设备正在通过陀螺仪的微小颤动向系统"自报家门"?现代智能设备中那些被忽视的硬件特性——加速度计的校准误差、麦克风的频率响应偏…...
从安装到实战:基于快马AI生成openclaw的网站内容监控应用项目
最近在做一个网站内容监控的小工具,尝试用openclaw框架来实现自动化采集和变更检测。这个项目从环境搭建到功能实现踩了不少坑,记录下完整过程给有类似需求的同学参考。 环境准备与openclaw安装 openclaw的安装其实挺简单,直接用pip就能搞定…...
SEO_掌握这5个SEO核心技巧,让你的流量翻倍
SEO: 掌握这5个SEO核心技巧,让你的流量翻倍 在互联网时代,如何让你的网站在众多竞争者中脱颖而出,成为用户搜索结果的首选,是每一个网站主的首要任务。搜索引擎优化(SEO)是实现这一目标的关键。本文将详细…...
3分钟掌握知识星球内容归档:让优质知识永久留存的方法
3分钟掌握知识星球内容归档:让优质知识永久留存的方法 【免费下载链接】zsxq-spider 爬取知识星球内容,并制作 PDF 电子书。 项目地址: https://gitcode.com/gh_mirrors/zs/zsxq-spider 你是否曾在知识星球上读到一篇深度好文,几周后想…...
猫抓Cat-Catch:资源嗅探的全链路解决方案(三大技术突破)
猫抓Cat-Catch:资源嗅探的全链路解决方案(三大技术突破) 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 猫抓Ca…...
告别网络依赖:用Vue3+Leaflet和IIS搭建本地离线地图服务(附腾讯地图瓦片下载)
构建企业级离线地图解决方案:Vue3Leaflet与IIS深度整合指南 在数字化转型浪潮中,地图功能已成为各类管理系统的基础需求。然而,许多政企单位、军工机构及偏远地区项目往往面临网络不稳定或完全离线的特殊环境。本文将系统介绍如何基于Vue3、L…...
