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


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 相关文章推荐
js各种验证文本框输入格式(正则表达式)
Oct 22 Javascript
jQuery UI Autocomplete 1.8.16 中文输入修正代码
Apr 16 Javascript
jquery对象和DOM对象的区别介绍
Aug 09 Javascript
原生javaScript做得动态表格(注释写的很清楚)
Dec 29 Javascript
js和jquery中循环的退出和继续学习记录
Sep 06 Javascript
javascript异步处理工作机制详解
Apr 13 Javascript
使用jquery获取url及url参数的简单实例
Jun 14 Javascript
微信小程序技巧之show内容展示,上传文件编码问题
Jan 23 Javascript
Easyui Tree获取当前选择节点的所有顶级父节点
Feb 14 Javascript
利用JS实现简单的瀑布流加载图片效果
Apr 22 Javascript
基于JS实现html中placeholder属性提示文字效果示例
Apr 19 Javascript
JS/jQuery实现超简单的Table表格添加,删除行功能示例
Jul 31 jQuery
微信小程序 动态绑定事件并实现事件修改样式
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之COOKIE支持详解
2010/09/20 PHP
浅析Yii中使用RBAC的完全指南(用户角色权限控制)
2013/06/20 PHP
php广告加载类用法实例
2014/09/23 PHP
php将图片保存入mysql数据库失败的解决方法
2014/12/27 PHP
php截取中文字符串函数实例
2015/02/23 PHP
PHP开启opcache提升代码性能
2015/04/26 PHP
PHP环境搭建(php+Apache+mysql)
2016/11/14 PHP
Mootools 1.2教程 输入过滤第二部分(字符串)
2009/09/15 Javascript
Extjs中DisplayField的日期或者数字格式化扩展
2010/09/03 Javascript
javascript parseInt() 函数的进制转换注意细节
2013/01/08 Javascript
JS Loading功能的简单实现
2013/11/29 Javascript
HTML页面弹出居中可拖拽的自定义窗口层
2014/05/07 Javascript
原生JS实现隐藏显示图片 JS实现点击切换图片效果
2021/01/27 Javascript
详解Vue.js Mixins 混入使用
2017/09/15 Javascript
JS使用正则表达式获取小括号、中括号及花括号内容的方法示例
2018/06/01 Javascript
详解Vue3 Composition API中的提取和重用逻辑
2020/04/29 Javascript
微信小程序文章详情功能完整实例
2020/06/03 Javascript
nuxt 路由、过渡特效、中间件的实现代码
2020/11/06 Javascript
python with statement 进行文件操作指南
2014/08/22 Python
python中日志logging模块的性能及多进程详解
2017/07/18 Python
人脸识别经典算法一 特征脸方法(Eigenface)
2018/03/13 Python
Django Sitemap 站点地图的实现方法
2019/04/29 Python
Python使用import导入本地脚本及导入模块的技巧总结
2019/08/07 Python
Python使用微信itchat接口实现查看自己微信的信息功能详解
2019/08/22 Python
python爬虫添加请求头代码实例
2019/12/28 Python
英国领先的汽车轮胎和快速健康中心:Kwik Fit
2017/10/29 全球购物
美国渔具店:FishUSA
2019/08/07 全球购物
什么是TCP/IP
2014/07/27 面试题
后勤人员自我评价怎么写
2013/09/19 职场文书
毕业设计说明书
2014/05/07 职场文书
个性发展自我评价2015
2015/03/09 职场文书
2015年食堂工作总结报告
2015/04/23 职场文书
公司辞职信模板
2015/05/13 职场文书
搞笑婚庆主持词
2015/06/29 职场文书
2015年小学实验室工作总结
2015/07/28 职场文书
大队委员竞选演讲稿
2015/11/20 职场文书