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


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 相关文章推荐
suggestion开发小结以及对键盘事件的总结(针对中文输入法状态)
Dec 20 Javascript
js密码强度校验
Nov 10 Javascript
JavaScript实现图片滑动切换的代码示例分享
Mar 06 Javascript
D3.js实现柱状图的方法详解
Sep 21 Javascript
jQuery Dialog 打开时自动聚焦的解决方法(两种方法)
Nov 24 Javascript
vue组件中使用iframe元素的示例代码
Dec 13 Javascript
Vue 使用中的小技巧
Apr 26 Javascript
jQuery控制input只能输入数字和两位小数的方法
May 16 jQuery
jQuery实现动态加载(按需加载)javascript文件的方法分析
May 31 jQuery
ES6顶层对象、global对象实例分析
Jun 14 Javascript
原生js实现点击轮播切换图片
Feb 11 Javascript
详解Vue的mixin策略
Nov 19 Vue.js
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
PHP小教程之实现双向链表
2014/06/12 PHP
PHP实现Unicode编码相互转换的方法示例
2020/11/17 PHP
PHP中散列密码的安全性分析
2019/07/26 PHP
类似GMAIL的Ajax信息反馈显示
2010/02/16 Javascript
jQuery Ajax使用 全解析
2010/12/15 Javascript
js创建一个input数组并绑定click事件的方法
2014/06/12 Javascript
jQuery实现tag便签去重效果的方法
2015/01/20 Javascript
深入解析AngularJS框架中$scope的作用与生命周期
2016/03/05 Javascript
js判断checkbox是否选中个数的方法(超简单)
2016/08/19 Javascript
基于vue实现swipe分页组件实例
2017/05/25 Javascript
JavaScript切换搜索引擎的导航网页搜索框实例代码
2017/06/11 Javascript
基于AngularJs select绑定数字类型的问题
2018/10/08 Javascript
JS原型与继承操作示例
2019/05/09 Javascript
layui prompt 设置允许空白提交的方法
2019/09/24 Javascript
vue element 中的table动态渲染实现(动态表头)
2019/11/21 Javascript
JS控制下拉列表左右选择实例代码
2020/05/08 Javascript
详解三种方式在React中解决绑定this的作用域问题并传参
2020/08/18 Javascript
[02:08]我的刀塔不可能这么可爱 胡晓桃_1
2014/06/20 DOTA
linux系统使用python监测网络接口获取网络的输入输出
2014/01/15 Python
Python中模拟enum枚举类型的5种方法分享
2014/11/22 Python
Python实现爬取需要登录的网站完整示例
2017/08/19 Python
基于python 二维数组及画图的实例详解
2018/04/03 Python
Python一行代码实现快速排序的方法
2019/04/30 Python
FFrpc python客户端lib使用解析
2019/08/24 Python
Python任务调度模块APScheduler使用
2020/04/15 Python
python实现秒杀商品的微信自动提醒功能(代码详解)
2020/04/27 Python
金融专业毕业生推荐信
2013/11/26 职场文书
超市中秋节促销方案
2014/03/21 职场文书
护士找工作求职信
2014/07/02 职场文书
学习焦裕禄同志为人民服务思想汇报
2014/09/10 职场文书
2014年人力资源工作总结
2014/11/19 职场文书
六一文艺汇演开幕词
2015/01/29 职场文书
2015公司年度工作总结
2015/05/14 职场文书
中学语文教学反思
2016/02/16 职场文书
2019年英语版感谢信(8篇)
2019/09/29 职场文书
Python可变集合和不可变集合的构造方法大全
2021/12/06 Python