微信小程序实现运动步数排行功能(可删除)


Posted in Javascript onJuly 05, 2018

效果图如下所示:

微信小程序实现运动步数排行功能(可删除)

wxml

<!-- 向左滑动删除功能 -->
<view class="item-box">
 <view class="items">
  <view wx:for="{{list}}" wx:key="{{index}}" class="item">
   
   <view bindtouchstart="touchS" bindtouchmove="touchM" bindtouchend="touchE" data-index="{{index}}" style="{{item.txtStyle}}" class="inner txt">
   <i>{{item.rank}}</i>
   <image class="item-icon" mode="widthFix" src="{{item.icon}}"></image>
    <i> {{item.name}}</i>
   <span class="item-data">
  
    <i class="rankpace"> {{item.pace}}</i>
    <!-- <span class="rankxin">{{item.xin}}</span> -->
   </span>
   
   </view>
   
   <view data-index="{{index}}" bindtap = "delItem" class="inner del">删除</view>
  </view>
 </view>
</view>

wxss

/* pages/leftSwiperDel/index.wxss */
view{
  box-sizing: border-box;
}
.item-box{
  width: 700rpx;
  margin: 0 auto;
  padding:40rpx 0;
}
.items{
  width: 100%;
}
.item{
  position: relative;
  border-top: 2rpx solid #eee;
  height: 120rpx;
  line-height: 120rpx;
  overflow: hidden;
   
}


.item:last-child{
  border-bottom: 2rpx solid #eee;
}
.inner{
  position: absolute;
  top:0;
}
.inner.txt{
  background-color: #fff;
  width: 100%;
  z-index: 5;
  padding:0 10rpx;
  transition: left 0.2s ease-in-out;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.inner.del{
  background-color: #e64340;
  width: 180rpx;text-align: center;
  z-index: 4;
  right: 0;
  color: #fff
}
.item-icon{
  width: 64rpx;
  height: 64rpx;
  vertical-align: middle;
  margin-right: 16rpx;
  margin-left:13px;
  border-radius:50%;

}

.item-data{
 float: right;
 margin-right:5%;}

.rankpace{
 color: #fa7e04;
}

js

// pages/leftSwiperDel/index.js
Page({
 data: {
  delBtnWidth: 180//删除按钮宽度单位(rpx)
 },
 onLoad: function (options) {
  // 页面初始化 options为页面跳转所带来的参数
  this.initEleWidth();
  this.tempData();
 },
 onReady: function () {
  // 页面渲染完成
 },
 onShow: function () {
  // 页面显示
 },
 onHide: function () {
  // 页面隐藏
 },
 onUnload: function () {
  // 页面关闭
 },
 touchS: function (e) {
  if (e.touches.length == 1) {
   this.setData({
    //设置触摸起始点水平方向位置
    startX: e.touches[0].clientX
   });
  }
 },
 touchM: function (e) {
  if (e.touches.length == 1) {
   //手指移动时水平方向位置
   var moveX = e.touches[0].clientX;
   //手指起始点位置与移动期间的差值
   var disX = this.data.startX - moveX;
   var delBtnWidth = this.data.delBtnWidth;
   var txtStyle = "";
   if (disX == 0 || disX < 0) {//如果移动距离小于等于0,文本层位置不变
    txtStyle = "left:0px";
   } else if (disX > 0) {//移动距离大于0,文本层left值等于手指移动距离
    txtStyle = "left:-" + disX + "px";
    if (disX >= delBtnWidth) {
     //控制手指移动距离最大值为删除按钮的宽度
     txtStyle = "left:-" + delBtnWidth + "px";
    }
   }
   //获取手指触摸的是哪一项
   var index = e.target.dataset.index;
   var list = this.data.list;
   list[index].txtStyle = txtStyle;
   //更新列表的状态
   this.setData({
    list: list
   });
  }
 },
 touchE: function (e) {
  if (e.changedTouches.length == 1) {
   //手指移动结束后水平位置
   var endX = e.changedTouches[0].clientX;
   //触摸开始与结束,手指移动的距离
   var disX = this.data.startX - endX;
   var delBtnWidth = this.data.delBtnWidth;
   //如果距离小于删除按钮的1/2,不显示删除按钮
   var txtStyle = disX > delBtnWidth / 2 ? "left:-" + delBtnWidth + "px" : "left:0px";
   //获取手指触摸的是哪一项
   var index = e.target.dataset.index;
   var list = this.data.list;
   list[index].txtStyle = txtStyle;
   //更新列表的状态
   this.setData({
    list: list
   });
  }
 },
 //获取元素自适应后的实际宽度
 getEleWidth: function (w) {
  var real = 0;
  try {
   var res = wx.getSystemInfoSync().windowWidth;
   var scale = (750 / 2) / (w / 2);//以宽度750px设计稿做宽度的自适应
   // console.log(scale);
   real = Math.floor(res / scale);
   return real;
  } catch (e) {
   return false;
   // Do something when catch error
  }
 },
 initEleWidth: function () {
  var delBtnWidth = this.getEleWidth(this.data.delBtnWidth);
  this.setData({
   delBtnWidth: delBtnWidth
  });
 },
 //点击删除按钮事件
 delItem: function (e) {
  //获取列表中要删除项的下标
  var index = e.target.dataset.index;
  var list = this.data.list;
  //移除列表中下标为index的项
  list.splice(index, 1);
  //更新列表的状态
  this.setData({
   list: list
  });
 },
 //测试临时数据
 tempData: function () {
  var list = [
   {
    rank: "1",
    txtStyle: "",
    icon: "/images/my.png",
    name: "李飞",
    pace: "23456",
   },
   {
    rank: "2",
    txtStyle: "", 
    icon: "/images/my.png",
    name: "张叶",
    pace: "23450",
   },
   {
    rank: "3",
    txtStyle: "",
    icon: "/images/my.png",
    name: "王小婷",
    pace: "22345",
   },
   {
    rank: "4",
    txtStyle: "",
    icon: "/images/my.png",
    name: "袁经理",
    pace: "21687",
   },
   {
    rank: "5",
    txtStyle: "",
    icon: "/images/my.png",
    name: "陈雅婷",
    pace: "21680",
   },
   {
    rank: "6",
    txtStyle: "",
    icon: "/images/my.png",
    name: "许安琪",
    pace: "20890",
   },
   {
    rank: "7",
    txtStyle: "",
    icon: "/images/my.png",
    name: "里俊飞",
    pace: "20741",
   },
   {
    rank: "8",
    txtStyle: "",
    icon: "/images/my.png",
    name: "李小俊",
    pace: "19511",
   },
   {
    rank: "9",
    txtStyle: "",
    icon: "/images/my.png",
    name: "陈俊飞",
    pace: "19501",
   },]
  //
  this.setData({
   list: list
  });
 }
})

总结

以上所述是小编给大家介绍的微信小程序实现运动步数排行功能(可删除),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
用showModalDialog弹出页面后,提交表单总是弹出一个新窗口
Jul 18 Javascript
再谈javascript 动态添加样式规则 W3C校检
Dec 25 Javascript
让浏览器非阻塞加载javascript的几种方法小结
Apr 25 Javascript
JavaScript中的几个关键概念的理解-原型链的构建
May 12 Javascript
jquery实现图片放大镜功能
Nov 23 Javascript
JavaScript简单实现弹出拖拽窗口(二)
Jun 17 Javascript
JS中Json数据的处理和解析JSON数据的方法详解
Jun 29 Javascript
如何检测JavaScript的各种类型
Jul 30 Javascript
Vue实现一个图片懒加载插件
Mar 11 Javascript
vue通过video.js解决m3u8视频播放格式的方法
Jul 30 Javascript
react quill中图片上传由默认转成base64改成上传到服务器的方法
Oct 30 Javascript
js 计算月/周的第一天和最后一天代码
Feb 01 Javascript
微信小程序之批量上传并压缩图片的实例代码
Jul 05 #Javascript
JavaScript控制浏览器全屏显示简单示例
Jul 05 #Javascript
基于jQuery使用Ajax动态执行模糊查询功能
Jul 05 #jQuery
JavaScript递归函数解“汉诺塔”算法代码解析
Jul 05 #Javascript
微信小程序开发之改变data中数组或对象的某一属性值
Jul 05 #Javascript
JavaScript实现京东购物放大镜和选项卡效果的方法分析
Jul 05 #Javascript
微信小程序实现左右联动的实战记录
Jul 05 #Javascript
You might like
建立文件交换功能的脚本(一)
2006/10/09 PHP
一个好用的分页函数
2006/11/16 PHP
PHP循环语句笔记(foreach,list)
2011/11/29 PHP
深入PHP运行环境配置的详解
2013/06/04 PHP
apache配置虚拟主机的方法详解
2013/06/17 PHP
浅析jQuery对select操作小结(遍历option,操作option)
2013/07/04 Javascript
js实现简单的星级选择器提交效果适用于评论等
2013/10/18 Javascript
JavaScript通过正则表达式实现表单验证电话号码
2014/03/07 Javascript
浅谈Javascript中的Function与Object
2015/01/26 Javascript
js实现跨域访问的三种方法
2015/12/09 Javascript
javascript表单处理具体实现代码(表单、链接、按钮)
2016/05/07 Javascript
AngularJS入门教程之表单校验用法示例
2016/11/02 Javascript
Bootstrap 3.x打印预览背景色与文字显示异常的解决
2016/11/06 Javascript
详解vue之页面缓存问题(基于2.0)
2017/01/10 Javascript
bootstrap table操作技巧分享
2017/02/15 Javascript
Bootstrap学习笔记 轮播(Carousel)插件
2017/03/21 Javascript
vue 实现类似淘宝星级评分的示例
2018/03/01 Javascript
AngularJS修改model值时,显示内容不变的实例
2018/09/13 Javascript
axios携带cookie配置详解(axios+koa)
2018/12/28 Javascript
javascript实现函数柯里化与反柯里化过程解析
2019/10/08 Javascript
浅析vue-router中params和query的区别
2019/12/24 Javascript
使用Vue Composition API写出清晰、可扩展的表单实现
2020/06/10 Javascript
[04:27]DOTA2官方论坛水友赛集锦
2013/09/16 DOTA
[03:38]2014DOTA2西雅图国际邀请赛 VG战队巡礼
2014/07/07 DOTA
python正则表达式match和search用法实例
2015/03/26 Python
python生成器,可迭代对象,迭代器区别和联系
2018/02/04 Python
python 编写简单网页服务器的实例
2018/06/01 Python
对python程序内存泄漏调试的记录
2018/06/11 Python
Python单元测试unittest的具体使用示例
2018/12/17 Python
python实现矩阵打印
2019/03/02 Python
Python 使用 attrs 和 cattrs 实现面向对象编程的实践
2019/06/12 Python
python模块hashlib(加密服务)知识点讲解
2019/11/25 Python
美国购车网站:TrueCar
2016/10/19 全球购物
什么造成了Java里面的异常
2016/04/24 面试题
上班看电影检讨书
2014/02/12 职场文书
幼儿园2016年感恩节活动总结
2016/04/01 职场文书