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


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 相关文章推荐
IE8 引入跨站数据获取功能说明
Jul 22 Javascript
jquery 学习笔记 传智博客佟老师附详细注释
Sep 12 Javascript
Jquery在IE7下无法使用 $.ajax解决方法
Nov 11 Javascript
jQuery 连续列表实现代码
Dec 21 Javascript
小试JQuery的AutoComplete插件
May 04 Javascript
Javascript图像处理—虚拟边缘介绍及使用方法
Dec 27 Javascript
easyui datagrid 大数据加载效率慢,优化解决方法(推荐)
Nov 09 Javascript
基于JS设计12306登录页面
Dec 28 Javascript
微信小程序 弹幕功能简单实例
Feb 14 Javascript
vue组件编写之todolist组件实例详解
Jan 22 Javascript
如何使用Node.js爬取任意网页资源并输出PDF文件到本地
Jun 17 Javascript
js实现无缝滚动双图切换效果
Jul 09 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
PHP 5.3.1 安装包 VC9 VC6不同版本的区别是什么
2010/07/04 PHP
手把手教你打印出PDF(关于fpdf的简单应用)
2013/06/25 PHP
PHP图像处理类库及演示分享
2015/05/17 PHP
如何实现php图片等比例缩放
2015/07/28 PHP
深入理解PHP中的empty和isset函数
2016/05/26 PHP
PHP常见的序列化与反序列化操作实例分析
2019/10/28 PHP
php实现通过stomp协议连接ActiveMQ操作示例
2020/02/23 PHP
精解window.setTimeout()&amp;window.setInterval()使用方式与参数传递问题!
2007/11/23 Javascript
Tab页界面 用jQuery及Ajax技术实现(php后台)
2011/10/12 Javascript
禁止空格提交表单的js代码
2013/11/17 Javascript
jquery easyui combobox模糊过滤(示例代码)
2013/11/30 Javascript
玩转方法:call和apply
2014/05/08 Javascript
moment.js轻松实现获取当前日期是当年的第几周
2015/02/05 Javascript
在js里怎么实现Xcode里的callFuncN方法(详解)
2016/11/05 Javascript
JavaScript判断浏览器和hack滚动条的写法
2017/07/23 Javascript
Echarts之悬浮框中的数据排序问题
2018/11/08 Javascript
Nuxt.js开启SSR渲染的教程详解
2018/11/30 Javascript
利用Angular7开发一个Radio组件的全过程
2019/07/11 Javascript
详解jQuery中的prop()使用方法
2020/01/05 jQuery
Python画柱状统计图操作示例【基于matplotlib库】
2018/07/04 Python
关于tf.matmul() 和tf.multiply() 的区别说明
2020/06/18 Python
全网最细 Python 格式化输出用法讲解(推荐)
2021/01/18 Python
html5开发之viewport使用
2013/10/17 HTML / CSS
阿根廷网上配眼镜:SmartBuyGlasses阿根廷
2016/08/19 全球购物
Lulu & Georgia官方网站:购买地毯、家具、抱枕、壁纸、床上用品等
2018/03/19 全球购物
英国豪华文具和皮具配件经典老品牌:Smythson(斯迈森)
2018/04/19 全球购物
本科生详细的自我评价
2013/09/19 职场文书
党员培训思想汇报
2014/01/07 职场文书
六一节目主持词
2014/04/01 职场文书
人力资源职位说明书
2014/07/29 职场文书
个人四风问题原因分析及整改措施
2014/09/28 职场文书
女性健康知识讲座主持词
2015/07/04 职场文书
关于实现中国梦的心得体会
2016/01/05 职场文书
python3使用diagrams绘制架构图的步骤
2021/04/08 Python
CSS中em的正确打开方式详解
2021/04/08 HTML / CSS
详解MySQL事务的隔离级别与MVCC
2021/04/22 MySQL