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


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面向对象之体会[总结]
Nov 13 Javascript
table行随鼠标移动变色示例
May 07 Javascript
JS辨别访问浏览器判断是android还是ios系统
Aug 19 Javascript
微信支付如何实现内置浏览器的H5页面支付
Sep 25 Javascript
详解JavaScript操作HTML DOM的基本方式
Oct 21 Javascript
jQuery移动web开发中的页面初始化与加载事件
Dec 03 Javascript
Jquery UI实现一次拖拽多个选中的元素操作
Dec 01 Javascript
Vue.js双向绑定实现原理详解
Dec 22 Javascript
浅谈vue项目如何打包扔向服务器
May 08 Javascript
如何使用pm2快速将项目部署到远程服务器
Mar 12 Javascript
微信小程序和百度的语音识别接口详解
May 06 Javascript
JavaScript实现秒杀时钟倒计时
Sep 29 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
php+iframe实现隐藏无刷新上传文件
2012/02/10 PHP
使用Zttp简化Guzzle 调用
2017/07/02 PHP
实例介绍PHP中zip_open()函数用法
2019/02/15 PHP
Jquery 最近浏览过的商品的功能实现代码
2010/05/14 Javascript
javascript真的不难-回顾一下基础知识
2013/01/15 Javascript
jQuery之尺寸调整组件的深入解析
2013/06/19 Javascript
JavaScript实现把数字转换成中文
2015/06/29 Javascript
Jquery代码实现图片轮播效果(一)
2015/08/12 Javascript
NodeJS创建基础应用并应用模板引擎
2016/04/12 NodeJs
AngularJS 与百度地图的结合实例
2016/10/20 Javascript
vuejs2.0子组件改变父组件的数据实例
2017/05/10 Javascript
详解封装基础的angular4的request请求方法
2018/06/05 Javascript
ES6基础之默认参数值
2019/02/21 Javascript
JS+DIV实现拖动效果
2020/02/11 Javascript
[03:06]3分钟带你回顾DOTA2完美盛典&完美大师赛
2017/12/06 DOTA
python 快速排序代码
2009/11/23 Python
python三元运算符实现方法
2013/12/17 Python
Python获取Windows或Linux主机名称通用函数分享
2014/11/22 Python
Python实现删除当前目录下除当前脚本以外的文件和文件夹实例
2015/07/27 Python
Python爬虫番外篇之Cookie和Session详解
2017/12/27 Python
Python实现按照指定要求逆序输出一个数字的方法
2018/04/19 Python
对numpy中的transpose和swapaxes函数详解
2018/08/02 Python
python 常见字符串与函数的用法详解
2018/11/23 Python
Python3.5内置模块之time与datetime模块用法实例分析
2019/04/27 Python
Pyorch之numpy与torch之间相互转换方式
2019/12/31 Python
如何利用Python识别图片中的文字
2020/05/31 Python
python中strip(),lstrip(),rstrip()函数的使用讲解
2020/11/17 Python
如何利用Python matplotlib绘制雷达图
2020/12/21 Python
python实现图片转字符画的完整代码
2021/02/21 Python
大学生优秀团员事迹材料
2014/01/30 职场文书
药学职务聘任书
2014/03/29 职场文书
西岭雪山导游词
2015/02/06 职场文书
教师考核鉴定意见
2015/06/05 职场文书
2019毕业论文致谢词
2019/06/24 职场文书
jQuery ajax - getScript() 方法和getJSON方法
2021/05/14 jQuery
JavaScript原型链详解
2021/11/07 Javascript