微信小程序实现手指拖动选项排序


Posted in Javascript onApril 22, 2020

本文实例为大家分享了微信小程序实现手指拖动选项排序的具体代码,供大家参考,具体内容如下

效果:

微信小程序实现手指拖动选项排序

wxml:

<view>
 <view class="dileititle">手指移动选项排序</view>
 <view style="width:740rpx;height:80vh;overflow-y:auto;padding:0 90rpx;margin:auto;" id="movebox">
 <block wx:for="{{list}}" wx:key="index">
 <view catchtouchmove="listitemmove" catchtouchend="listitemmove" data-index="{{index}}" class="flex1 dileiitemlist" id="movelist{{index}}" style="left:0;right:0;{{nowmoveindex==index?('position:absolute;top:'+movetop+'px;height:'+itemheight+'px;'):''}}">
 <view class="{{moveoutindex==index?'changemovenow':''}}" style="height:0;transition: height 0.2s;"></view>
 <view class="ranknum">{{index+1}}</view>
 <view class="flex1" style="border-radius:10rpx;width:440rpx;position:relative;color:#fff;">
 <view style="flex:1;text-align: center;margin-right: 20rpx;padding: 20rpx 20rpx;background:#8eb1f7;border-radius:10rpx;">{{item.member.nickname}}</view>
 </view>
 </view>
 </block>
 </view>
</view>
<button class='tijiao' catchtap="lastsubmit">确定</button>

js:

let app = getApp()
app.unitgameinfo = {"members":[{"member":{"nickname":"小程序照片合成","job":"ckext"},},{"member":{"nickname":"高球丸子"},},{"member":{"nickname":"DRobertdsf","job":"黄金"},},{"member":{"nickname":"erer","job":"ckext"},},{"member":{"nickname":"just do it","job":"黄金"},},{"member":{"nickname":"888"},}],};
Page({
 data: {
 },
 onLoad: function (options) {
 var info = app.unitgameinfo,list;
 list = info.members;
 this.setData({options,info,list});
 this.getwxmlcode("#movebox",(resp)=>{
 this.setData({movebox:resp})
 setTimeout(()=>{this.getwxmlcode("#movelist0",(res)=>{
 this.setData({movelist0:res})
 var jiange = res.top-resp.top;
 var yiban = res.bottom - res.top + jiange;
 this.setData({
  itemheight:res.bottom - res.top,
  jiange:yiban, //两条中间到另一条的距离
  jianqu:resp.top-(res.bottom - res.top)/2, //位置要减去距离
 })
 })},300)
 })
 
 },
 getwxmlcode(str,cal){
 const query1 = wx.createSelectorQuery()
 query1.select(str).boundingClientRect()
 query1.selectViewport().scrollOffset()
 query1.exec((res) => {
 if(cal) cal(res[0])
 })
 },
 listitemmove(e){
 // console.log(e)
 if(e.type=="touchmove"){
 var movetop = e.touches[0].pageY-this.data.itemheight;
 var moveoutindex = parseInt((movetop-this.data.jianqu)/this.data.jiange);
 if(e.currentTarget.dataset.index<=moveoutindex) moveoutindex++;
 this.moveoutindex = moveoutindex;
 this.setData({nowmoveindex:e.currentTarget.dataset.index,movetop,moveoutindex})
 }else{
 let index = e.currentTarget.dataset.index,score = this.data.list;
 let data = {...score[index]};
 score.splice(index,1);
 if(index<=this.moveoutindex-1) this.moveoutindex--;
 score.splice(this.moveoutindex,0,data);
 this.setData({list:score,moveoutindex:-1,nowmoveindex:-1});
 }
 },
 onShow: function(){
 },
 lastsubmit(){
 console.log(this.data.list)
 },
 
})

wxss:

page{background-color: #fff;font-size:30rpx;text-align: center;color: #2952a5;}
.tijiao{
 color: #fff;font-size: 30rpx;line-height: 2.8;
 margin: 20rpx auto 20rpx;width:80vw;position: fixed;bottom: 50rpx;left: 10vw;
 background-color: #2952a5;border-radius:50rpx;
}
.dileiitemlist{justify-content: center;padding-top:30rpx;flex-wrap: wrap;}
.dileititle{font-size: 32rpx;line-height: 100rpx;}
.ranknum{width:60rpx;height: 60rpx;line-height: 60rpx;text-align: center;border-radius:50%;border:1rpx solid #2952a5;margin-right:30rpx;}
.changemovenow{width:100%;height:60px!important;}
.flex1{display:flex;align-items:center;}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 框架小结 个人工作经验
Jun 13 Javascript
js客户端快捷键管理类的较完整实现和应用
Jun 08 Javascript
一段批量给页面上的控件赋值js
Jun 19 Javascript
javascript数组去重3种方法的性能测试与比较
Mar 26 Javascript
javascript学习笔记(一)基础知识
Sep 30 Javascript
Node.js中的process.nextTick使用实例
Jun 25 Javascript
使用Bootstrap美化按钮实例代码(demo)
Feb 03 Javascript
打通前后端构建一个Vue+Express的开发环境
Jul 17 Javascript
swiper4实现移动端导航切换
Oct 16 Javascript
微信小程序中限制激励式视频广告位显示次数(实现思路)
Dec 06 Javascript
解决vue自定义指令导致的内存泄漏问题
Aug 04 Javascript
vue使用canvas实现移动端手写签名
Sep 22 Javascript
javascript设计模式 ? 观察者模式原理与用法实例分析
Apr 22 #Javascript
javascript设计模式 ? 状态模式原理与用法实例分析
Apr 22 #Javascript
Vue computed 计算属性代码实例
Apr 22 #Javascript
js 解析 JSON 数据简单示例
Apr 21 #Javascript
react 原生实现头像滚动播放的示例
Apr 21 #Javascript
解决angular 使用原生拖拽页面卡顿及表单控件输入延迟问题
Apr 21 #Javascript
javascript设计模式 ? 策略模式原理与用法实例分析
Apr 21 #Javascript
You might like
虹吸壶煮咖啡26个注意事项
2021/03/03 冲泡冲煮
php split汉字
2009/06/05 PHP
php无限分类且支持输出树状图的详细介绍
2013/06/19 PHP
PHP读取汉字的点阵数据
2015/06/22 PHP
ThinkPHP 模板引擎使用详解
2017/05/07 PHP
PHP实现长轮询消息实时推送功能代码实例讲解
2021/02/26 PHP
IE与FF下javascript获取网页及窗口大小的区别详解
2014/01/14 Javascript
jQuery.extend()、jQuery.fn.extend()扩展方法示例详解
2014/05/08 Javascript
基于Echarts 3.19 制作常用的图形(非静态)
2016/05/19 Javascript
html5+CSS 实现禁止IOS长按复制粘贴功能
2016/12/28 Javascript
JavaScript &amp; jQuery完美判断图片是否加载完毕
2017/01/08 Javascript
vue实现某元素吸顶或固定位置显示(监听滚动事件)
2017/12/13 Javascript
基于angular6.0实现的一个组件懒加载功能示例
2018/04/12 Javascript
vue-router命名视图的使用讲解
2019/01/19 Javascript
基于Layui自定义模块的使用方法详解
2019/09/14 Javascript
js实现移动端图片滑块验证功能
2020/09/29 Javascript
使用python实现http及ftp服务进行数据传输的方法
2018/10/26 Python
Python3 jupyter notebook 服务器搭建过程
2018/11/30 Python
python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)
2019/04/18 Python
python3 requests库文件上传与下载实现详解
2019/08/22 Python
python图形开发GUI库wxpython使用方法详解
2020/02/14 Python
Python实现栈的方法详解【基于数组和单链表两种方法】
2020/02/22 Python
matplotlib.pyplot.matshow 矩阵可视化实例
2020/06/16 Python
css 元素选择器的简单实例
2016/05/23 HTML / CSS
C#如何调用Word并打开一个Word文档
2013/05/08 面试题
下列程序在32位linux或unix中的结果是什么
2014/03/25 面试题
商场消防演习方案
2014/02/12 职场文书
美国留学经济担保书
2014/05/20 职场文书
护理专业毕业生自荐书
2014/05/24 职场文书
药剂专业自荐书
2014/06/20 职场文书
讲党性心得体会
2014/09/03 职场文书
单位委托书范本(3篇)
2014/09/18 职场文书
2016年幼儿园教研活动总结
2016/04/05 职场文书
python之np.argmax()及对axis=0或者1的理解
2021/06/02 Python
Python OpenCV实现图形检测示例详解
2022/04/08 Python
Win11安全功能升级:内置防网络钓鱼功能
2022/04/08 数码科技