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


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 相关文章推荐
firefo xml 读写实现js代码
Jun 11 Javascript
使用UglifyJS合并/压缩JavaScript的方法
Mar 07 Javascript
写自已的js类库需要的核心代码
Jul 16 Javascript
Javascript拓展String方法小结
Jul 08 Javascript
jquery选择器之层级过滤选择器详解
Jan 27 Javascript
微信小程序 数据访问实例详解
Oct 08 Javascript
JavaScript组件开发之输入框加候选框
Mar 10 Javascript
JavaScript原型继承_动力节点Java学院整理
Jun 30 Javascript
JavaScript实现的仿新浪微博原生态输入字数即时检查功能【兼容IE6】
Sep 26 Javascript
浅谈Webpack多页应用HMR卡住问题
Apr 24 Javascript
JavaScript实现公告栏上下滚动效果
Mar 13 Javascript
何时使用Map来代替普通的JS对象
Apr 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检测apache mod_rewrite模块是否安装的方法
2015/03/14 PHP
Yii2 中实现单点登录的方法
2018/03/09 PHP
ie 调试javascript的工具
2009/04/29 Javascript
js简单的弹出框有关闭按钮
2014/05/05 Javascript
常用的jquery模板插件——jQuery Boilerplate介绍
2014/09/23 Javascript
JS输入用户名自动显示邮箱后缀列表的方法
2015/01/27 Javascript
个人总结的一些JavaScript技巧、实用函数、简洁方法、编程细节
2015/06/10 Javascript
javascript实现鼠标移到Image上方时显示文字效果的方法
2015/08/07 Javascript
Validform+layer实现漂亮的表单验证特效
2016/01/17 Javascript
Laydate时间组件在火狐浏览器下有多时间输入框时只能给第一个输入框赋值的解决方法
2016/08/18 Javascript
fullCalendar中文API官方文档
2017/02/07 Javascript
BootStrap的双日历时间控件使用
2017/07/25 Javascript
vue中实现图片和文件上传的示例代码
2018/03/16 Javascript
vue实现form表单与table表格的数据关联功能示例
2019/01/29 Javascript
详解vue-cli+es6引入es5写的js(两种方法)
2019/04/19 Javascript
微信小程序常见页面跳转操作简单示例
2019/05/01 Javascript
JQuery中DOM节点的操作与访问方法实例分析
2019/12/23 jQuery
[55:25]VGJ.T vs Optic Supermajor小组赛D组 BO3 第三场 6.3
2018/06/04 DOTA
python读取html中指定元素生成excle文件示例
2014/04/03 Python
python中字典dict常用操作方法实例总结
2015/04/04 Python
python logging日志模块的详解
2017/10/29 Python
python爬取哈尔滨天气信息
2018/07/14 Python
Python3获取电脑IP、主机名、Mac地址的方法示例
2019/04/11 Python
Python字典fromkeys()方法使用代码实例
2020/07/20 Python
如何一键升级Python所有包
2020/11/05 Python
澳大利亚领先的运动鞋商店:Hype DC
2018/03/31 全球购物
下面关于"联合"的题目的输出是什么
2013/08/06 面试题
一些高难度的SQL面试题
2016/11/29 面试题
通息工程毕业生自荐信
2013/10/16 职场文书
生物工程专业求职信
2014/09/03 职场文书
课堂打架检讨书200字
2014/11/21 职场文书
保留意见审计报告
2015/06/05 职场文书
劳务派遣管理制度(样本)
2019/08/23 职场文书
八年级作文之感恩
2019/11/22 职场文书
如何利用map实现Nginx允许多个域名跨域
2021/03/31 Servers
Java实现贪吃蛇游戏的示例代码
2022/09/23 Java/Android