微信小程序 实现列表项滑动显示删除按钮的功能


Posted in Javascript onApril 13, 2017

微信小程序 实现列表项滑动显示删除按钮的功能

微信小程序并没有提供列表控件,所以也没有iOS上惯用的列表项左滑删除的功能,SO只能自己干了。

原理很简单,用2个层,上面的层显示正常的内容,下面的层显示一个删除按钮,就是记录手指滑动的距离,动态的来移动上层元素,当然上层用绝对定位。

wxml:

<view class="container">
 <view class="record-box" data-datetime="{{record.datetime}}" wx:for="{{detailList}}" wx:for-item="record">
  <view class="record" style="left:{{record.offsetX}}px" bindtouchstart="recordStart" catchtouchmove="recordMove" bindtouchend="recordEnd">
   <view class="left">
    <view>{{record.type}} {{record.count+record.unit}}</view>
    <view class="summary">{{record.remark}}</view>
   </view>
   <view class="right">
    {{record.datetime}}
   </view>
  </view>
  <view class="delete-box">
   <view>删除</view>
  </view>
 </view>
</view>

 wxss:

@import "../common/weui.wxss";
 
.container {
 box-sizing: border-box;
 padding: 0 0 0 0;
}
 
 
 
.record {
 display: flex;
 flex-direction: row;
 align-items: center;
 width:100%;
  height: 120rpx;
 position: absolute;
 justify-content: space-between;
 background-color: #fff;
}
 
.record .right{
 margin-right: 30rpx;
   color: #888888;
}
.record .left{
 margin-left: 30rpx;
  display: flex;
  flex-direction: column;
 justify-content: space-between;
}
 
.record .left .summary{
  color: #aaa;
 font-size: 30rpx;
 line-height: 30rpx;
 
}
 
.record-box{
 height: 120rpx;
 width: 100%;
 border-bottom: 1rpx solid #ddd;
 background-color: #fff;
}
 
.delete-box{
 background-color: #e64340;
 color: #ffffff;
 float: right;
 height: 100%;
 width: 80px;
 display: flex;
 align-items: center;
 justify-content: center;
}
 
.record-box:last-child {
 border-bottom: 0;
}
 
.record .r-item {
  
}

JS代码:

var detailList = [
  { datetime: '2017-01-01 17:00', count: 100, unit: 'ml', type: '开水', remark: '哈哈哈哈' },
  { datetime: '2017-01-01 17:01', count: 100, unit: 'ml', type: '开水' },
  { datetime: '2017-01-01 17:02', count: 100, unit: 'ml', type: '开水' }
];
var recordStartX = 0;
var currentOffsetX = 0;
Page(
  {
    data: {
      detailList: detailList
    }
    ,
    recordStart: function (e) {
      recordStartX = e.touches[0].clientX;
      currentOffsetX = this.data.detailList[0].offsetX;
      console.log('start x ', recordStartX);
    }
    ,
    recordMove: function (e) {
      var detailList = this.data.detailList;
      var item = detailList[0];
      var x = e.touches[0].clientX;
      var mx = recordStartX - x;
      console.log('move x ', mx);

      var result = currentOffsetX - mx;
      if (result >= -80 && result <= 0) {
        item.offsetX = result;
      }
      this.setData({
        detailList: detailList
      });
    }
    ,
    recordEnd: function (e) {
      var detailList = this.data.detailList;
      var item = detailList[0];
      console.log('end x ', item.offsetX);

      if (item.offsetX < -40) {
        item.offsetX = -80;

      } else {
        item.offsetX = 0;

      }
      this.setData({
        detailList: detailList
      });
    }

  }
);

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
用prototype实现的简单小巧的多级联动菜单
Mar 24 Javascript
javascript Firefox与IE 替换节点的方法
Feb 24 Javascript
javascript写的日历类(基于pj)
Dec 28 Javascript
jQuery zTree加载树形菜单功能
Feb 25 Javascript
js Canvas实现圆形时钟教程
Sep 19 Javascript
AngularJS中$watch和$timeout的使用示例
Sep 20 Javascript
JavaScript 函数节流详解及方法总结
Feb 09 Javascript
vue2.0 中#$emit,$on的使用详解
Jun 07 Javascript
jQuery接受后台传递的List的实例详解
Aug 02 jQuery
基于jQuery实现定位导航位置效果
Nov 15 jQuery
微信小程序实现通过js操作wxml的wxss属性示例
Dec 06 Javascript
vue中使用 pako.js 解密 gzip加密字符串的方法
Jun 10 Javascript
微信小程序 动态绑定事件并实现事件修改样式
Apr 13 #Javascript
Bootstrap实现各种进度条样式详解
Apr 13 #Javascript
微信小程序 本地数据存储实例详解
Apr 13 #Javascript
从零开始学习Node.js系列教程之设置HTTP头的方法示例
Apr 13 #Javascript
从零开始学习Node.js系列教程之SQLite3和MongoDB用法分析
Apr 13 #Javascript
JS 插件dropload下拉刷新、上拉加载使用小结
Apr 13 #Javascript
angularjs指令之绑定策略(@、=、&amp;)
Apr 13 #Javascript
You might like
DOTA2 1月28日更新:监管系统降临刀塔世界
2021/01/28 DOTA
百万级别知乎用户数据抓取与分析之PHP开发
2015/09/28 PHP
解决ThinkPHP下使用上传插件Uploadify浏览器firefox报302错误的方法
2015/12/18 PHP
Javascript中暂停功能的实现代码
2007/03/04 Javascript
jquery下onpropertychange事件的绑定方法
2010/08/01 Javascript
jquery验证手机号码、邮箱格式是否正确示例代码
2013/07/28 Javascript
jquery动态添加删除一行数据示例
2014/06/12 Javascript
js获取鼠标位置实例详解
2015/12/09 Javascript
EasyUI 结合JS导出Excel文件的实现方法
2016/11/10 Javascript
vuejs2.0实现一个简单的分页示例
2017/02/22 Javascript
老生常谈angularjs中的$state.go
2017/04/24 Javascript
angularJs-$http实现百度搜索时的动态下拉框示例
2018/02/27 Javascript
js中call()和apply()改变指针问题的讲解
2019/01/17 Javascript
零基础之Node.js搭建API服务器的详解
2019/03/08 Javascript
webpack 处理CSS资源的实现
2019/09/27 Javascript
BootstrapValidator实现表单验证功能
2019/11/08 Javascript
Sanic框架流式传输操作示例
2018/07/18 Python
numpy中loadtxt 的用法详解
2018/08/03 Python
Python tkinter的grid布局及Text动态显示方法
2018/10/11 Python
Python cv2 图像自适应灰度直方图均衡化处理方法
2018/12/07 Python
python re库的正则表达式入门学习教程
2019/03/08 Python
Python批量删除只保留最近几天table的代码实例
2019/04/01 Python
Python使用Beautiful Soup爬取豆瓣音乐排行榜过程解析
2019/08/15 Python
python绘制随机网络图形示例
2019/11/21 Python
Python爬虫实战案例之爬取喜马拉雅音频数据详解
2020/12/07 Python
英文简历中的自我评价
2013/10/06 职场文书
毕业生自荐信如何写
2014/03/24 职场文书
工商局所长四风自我剖析及整改措施
2014/10/26 职场文书
2014年会计人员工作总结
2014/12/10 职场文书
商务邀请函
2015/01/30 职场文书
业务员辞职信范文
2015/03/02 职场文书
2015年学校办公室工作总结
2015/05/26 职场文书
五星红旗迎风飘扬观后感
2015/06/17 职场文书
志愿者工作心得体会
2016/01/15 职场文书
导游词之铁岭象牙山
2019/12/06 职场文书
用Python将GIF动图分解成多张静态图片
2021/06/11 Python