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


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程序之undefined篇(中)
Nov 23 Javascript
jquery插件制作简单示例说明
Feb 03 Javascript
jquery可见性过滤选择器使用示例
Jun 24 Javascript
js跳转页面方法实现汇总
Feb 11 Javascript
js函数参数设置默认值的一种变通实现方法
May 26 Javascript
判断访客终端类型集锦
Jun 05 Javascript
Express框架之connect-flash详解
May 31 Javascript
JS实现的文件拖拽上传功能示例
May 21 Javascript
详解bootstrap-fileinput文件上传控件的亲身实践
Mar 21 Javascript
如何利用JavaScript实现二叉搜索树
Apr 02 Javascript
JavaScript 数组去重详解
Sep 15 Javascript
Element-ui Layout布局(Row和Col组件)的实现
Dec 06 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/07/11 PHP
php打包压缩文件之ZipArchive方法用法分析
2016/04/30 PHP
PHP 500报错的快速解决方法
2016/12/14 PHP
php实现单笔转账到支付宝功能
2018/10/09 PHP
javascript中数组array及string的方法总结
2014/11/28 Javascript
js实现带关闭按钮始终显示在网页最底部工具条的方法
2015/03/02 Javascript
ajax如何实现页面局部跳转与结果返回
2015/08/24 Javascript
JavaScript编程中实现对象封装特性的实例讲解
2016/06/24 Javascript
用WebStorm进行Angularjs 2开发(环境篇:Windows 10,Angular-cli方式)
2018/12/05 Javascript
微信二次分享报错invalid signature问题及解决方法
2019/04/01 Javascript
详解vue中多个有顺序要求的异步操作处理
2019/10/29 Javascript
vue.js 实现a标签href里添加参数
2019/11/12 Javascript
js实现超级玛丽小游戏
2020/03/18 Javascript
vue 重塑数组之修改数组指定index的值操作
2020/08/09 Javascript
vue中jsonp插件的使用方法示例
2020/09/10 Javascript
Python多线程编程(四):使用Lock互斥锁
2015/04/05 Python
Python第三方库xlrd/xlwt的安装与读写Excel表格
2017/01/21 Python
python字符串str和字节数组相互转化方法
2017/03/18 Python
Python PyCharm如何进行断点调试
2019/07/05 Python
Django Form设置文本框为readonly操作
2020/07/03 Python
使用matplotlib的pyplot模块绘图的实现示例
2020/07/12 Python
IE下实现类似CSS3 text-shadow文字阴影的几种方法
2011/05/11 HTML / CSS
中东地区最大的奢侈品市场:The Luxury Closet
2019/04/09 全球购物
中海讯通笔试题
2015/09/15 面试题
公司财务自我评价分享
2013/12/17 职场文书
化学教师教学反思
2014/01/17 职场文书
汽车装潢店创业计划书范文
2014/02/05 职场文书
绿色环保口号
2014/06/12 职场文书
初中同学会活动方案
2014/08/22 职场文书
美国旅游签证工作证明
2014/10/14 职场文书
离职报告范文
2014/11/04 职场文书
初中生散播谣言检讨书
2014/11/17 职场文书
2014年新农村建设工作总结
2014/12/01 职场文书
社区端午节活动总结
2015/02/11 职场文书
英雄儿女观后感
2015/06/09 职场文书
新员工入职感想
2015/08/07 职场文书