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


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 相关文章推荐
深入document.write()与HTML4.01的非成对标签的详解
May 08 Javascript
jQuery处理json数据返回数组和输出的方法
Mar 11 Javascript
JavaScript声明变量名的语法规则
Jul 10 Javascript
JS实现的仿淘宝交易倒计时效果
Nov 27 Javascript
详述JavaScript实现继承的几种方式(推荐)
Mar 22 Javascript
jquery中live()方法和bind()方法区别分析
Jun 23 Javascript
javascript笔记之匿名函数和闭包
Feb 06 Javascript
利用JavaScript对中文(汉字)进行排序实例详解
Jun 18 Javascript
使用JavaScript实现点击循环切换图片效果
Sep 03 Javascript
AngularJs用户登录问题处理(交互及验证、阻止FQ处理)
Oct 26 Javascript
vue根据值给予不同class的实例
Sep 29 Javascript
Vue插件从封装到发布的完整步骤记录
Feb 28 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
PHP+javascript模拟Matrix画面
2006/10/09 PHP
php 连接mssql数据库 初学php笔记
2010/03/01 PHP
php 判断字符串中是否包含html标签
2014/02/17 PHP
一组PHP加密解密函数分享
2014/06/05 PHP
PHP中的traits简单使用实例
2015/05/13 PHP
Laravel find in set排序实例
2019/10/09 PHP
PHP实现单条sql执行多个数据的insert语句方法
2019/10/11 PHP
Laravel相关的一些故障解决
2020/08/19 PHP
jQuery 1.4 15个你应该知道的新特性(译)
2010/01/24 Javascript
AJAX使用了UpdatePanel后无法使用alert弹出脚本
2010/04/02 Javascript
25个非常棒的jQuery滑块插件和教程小结
2011/09/02 Javascript
jquery ajax 如何向jsp提交表单数据
2015/08/23 Javascript
jquery可定制的在线UEditor编辑器
2015/11/17 Javascript
jQueryUI Datepicker组件设置日期高亮
2016/10/13 Javascript
JS实现Ajax的方法分析
2016/12/20 Javascript
详解vue express启动数据服务
2017/07/05 Javascript
jQuery Datatables表头不对齐的解决办法
2017/11/27 jQuery
使用vue2实现购物车和地址选配功能
2018/03/29 Javascript
websocket4.0+typescript 实现热更新的方法
2019/08/14 Javascript
vue中英文切换实例代码
2020/01/21 Javascript
JavaScript实现商品评价五星好评
2020/11/30 Javascript
Python封装shell命令实例分析
2015/05/05 Python
详解Django中的form库的使用
2015/07/18 Python
详谈python3 numpy-loadtxt的编码问题
2018/04/29 Python
Python 爬虫之Beautiful Soup模块使用指南
2018/07/05 Python
详解Python对JSON中的特殊类型进行Encoder
2019/07/15 Python
python+opencv3生成一个自定义纯色图教程
2020/02/19 Python
Python项目实战之使用Django框架实现支付宝付款功能
2021/02/23 Python
XMLHttpRequest对象在IE和Firefox中创建方式有没有不同
2016/03/23 面试题
铲车司机岗位职责
2014/03/15 职场文书
2014年入党积极分子学习三中全会思想汇报
2014/09/13 职场文书
校园运动会广播稿
2014/10/06 职场文书
期中考试复习计划
2015/01/19 职场文书
个人工作决心书
2015/09/22 职场文书
MySQL官方导出工具mysqlpump的使用
2021/05/21 MySQL
带你了解Java中的ForkJoin
2022/04/28 Java/Android