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


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 相关文章推荐
教你如何解密js/vbs/vbscript加密的编码异处理小结
Jun 25 Javascript
js判断undefined类型,undefined,null, 的区别详细解析
Dec 16 Javascript
jQuery实现控制文字内容溢出用省略号(…)表示的方法
Feb 26 Javascript
Knockout结合Bootstrap创建动态UI实现产品列表管理
Sep 14 Javascript
巧用数组制作图片切换js代码
Nov 29 Javascript
js原生之焦点图转换加定时器实例
Dec 12 Javascript
jQuery中hover方法搭配css的hover选择器,实现选中元素突出显示方法
May 08 jQuery
详解Node中导入模块require和import的区别
Aug 11 Javascript
JavaScript中运算符规则和隐式类型转换示例详解
Sep 06 Javascript
基于Vue的ajax公共方法(详解)
Jan 20 Javascript
详解VUE项目中安装和使用vant组件
Apr 28 Javascript
详解JavaScript的计时器和按钮效果设置
Feb 18 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留言本实例代码
2010/05/09 PHP
php json_encode奇怪问题说明
2011/09/27 PHP
PHP的简易冒泡法代码分享
2012/08/28 PHP
php操作xml入门之cdata区段
2015/01/23 PHP
ThinkPHP3.1.2 使用cli命令行模式运行的方法
2020/04/14 PHP
详解PHP中curl_multi并发的实现
2020/06/08 PHP
脚本收藏iframe
2006/07/21 Javascript
解析John Resig Simple JavaScript Inheritance代码
2012/12/03 Javascript
从零学jquery之如何使用回调函数
2014/05/16 Javascript
jQuery取消ajax请求的方法
2015/06/09 Javascript
多个js毫秒倒计时同时进行效果
2016/01/05 Javascript
jQuery Timelinr实现垂直水平时间轴插件(附源码下载)
2016/02/16 Javascript
js 创建对象 经典模式全面了解
2016/08/16 Javascript
Vue.js每天必学之表单控件绑定
2016/09/05 Javascript
js放大镜放大购物图片效果
2017/01/18 Javascript
js脚本编写简单刷票投票系统
2017/06/27 Javascript
vue-router history模式下的微信分享小结
2018/07/05 Javascript
使用electron制作满屏心特效的示例代码
2018/11/27 Javascript
JavaScript中的一些实用小技巧总结
2019/04/07 Javascript
VUE+elementui面包屑实现动态路由详解
2019/11/04 Javascript
vuex实现像调用模板方法一样调用Mutations方法
2019/11/06 Javascript
适用于 Vue 的播放器组件Vue-Video-Player操作
2020/11/16 Javascript
python对象及面向对象技术详解
2016/07/19 Python
Python标准库sched模块使用指南
2017/07/06 Python
Python基于identicon库创建类似Github上用的头像功能
2017/09/25 Python
TensorFlow在MAC环境下的安装及环境搭建
2017/11/14 Python
python实现的MySQL增删改查操作实例小结
2018/12/19 Python
pytorch实现特殊的Module--Sqeuential三种写法
2020/01/15 Python
python3.4中清屏的处理方法
2020/07/06 Python
保安自我鉴定范文
2013/12/08 职场文书
某同学的自我鉴定范文
2013/12/26 职场文书
汽车专业大学生职业生涯规划范文
2014/01/07 职场文书
2014年计生协会工作总结
2014/11/21 职场文书
教师病假条范文
2015/08/17 职场文书
在HTML5 localStorage中存储对象的示例代码
2021/04/21 Javascript
Java 多态分析
2022/04/26 Java/Android