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


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实现控制内容的向上向下滚动效果
Jun 26 Javascript
jQuery实现图片放大预览实现原理及代码
Sep 12 Javascript
js单独获取一个checkbox看其是否被选中
Sep 22 Javascript
JavaScript中数据结构与算法(五):经典KMP算法
Jun 19 Javascript
JS解析url查询参数的简单代码
Aug 06 Javascript
Vue 多层组件嵌套二种实现方式(测试实例)
Sep 08 Javascript
基于JavaScript表单脚本(详解)
Oct 18 Javascript
Vue-路由导航菜单栏的高亮设置方法
Mar 17 Javascript
Bootstrap模态对话框用法简单示例
Aug 31 Javascript
JS基于开关思想实现的数组去重功能【案例】
Feb 18 Javascript
vue实现随机验证码功能的实例代码
Apr 30 Javascript
vue-cli4.x创建企业级项目的方法步骤
Jun 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.ini中文版(2)
2006/10/09 PHP
PHP 伪静态隐藏传递参数名的四种方法
2010/02/22 PHP
php cookies中删除的一般赋值方法
2011/05/07 PHP
Discuz!X中SESSION机制实例详解
2015/09/23 PHP
PHP延迟静态绑定的深入讲解
2018/04/02 PHP
IE6、IE7中获取Button元素的值的bug说明
2011/08/28 Javascript
JavaScript 面向对象与原型
2015/04/10 Javascript
JavaScript中Null与Undefined的区别解析
2015/06/30 Javascript
JSON简介以及用法汇总
2016/02/21 Javascript
JS实现兼容各种浏览器的获取选择文本的方法【测试可用】
2016/06/21 Javascript
JavaScript实现简单的拖动效果
2016/07/02 Javascript
BootStrap树状图显示功能
2016/11/24 Javascript
jQuery插件echarts实现的去掉X轴、Y轴和网格线效果示例【附demo源码下载】
2017/03/04 Javascript
Nodejs搭建wss服务器教程
2017/05/24 NodeJs
Angular 4 依赖注入学习教程之FactoryProvider的使用(四)
2017/06/04 Javascript
详解React项目如何修改打包地址(编译输出文件地址)
2019/03/21 Javascript
vue实现修改图片后实时更新
2019/11/14 Javascript
Threejs实现滴滴官网首页地球动画功能
2020/07/13 Javascript
python实现excel读写数据
2021/03/02 Python
分享一下Python数据分析常用的8款工具
2018/04/29 Python
pygame实现俄罗斯方块游戏(AI篇2)
2019/10/29 Python
基于Python中random.sample()的替代方案
2020/05/23 Python
详解matplotlib中pyplot和面向对象两种绘图模式之间的关系
2021/01/22 Python
详解HTML5中的拖放事件(Drag 和 drop)
2016/11/14 HTML / CSS
AmazeUI 图标的示例代码
2020/08/13 HTML / CSS
程序员经常用到的UNIX命令
2015/04/13 面试题
2013届毕业生求职信范文
2013/11/20 职场文书
出纳员的岗位职责
2014/02/22 职场文书
项目投资意向书
2014/04/01 职场文书
银行行长竞聘演讲稿
2014/04/23 职场文书
员工薪酬激励方案
2014/06/13 职场文书
百万英镑观后感
2015/06/09 职场文书
导游词之新疆尼雅遗址
2019/10/16 职场文书
详解Go语言运用广度优先搜索走迷宫
2021/06/23 Python
利用Python判断整数是否是回文数的3种方法总结
2021/07/07 Python
Java 关于String字符串原理上的问题
2022/04/07 Java/Android