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


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 相关文章推荐
JQuery读取XML文件数据并显示的实现代码
Dec 16 Javascript
js 获取和设置css3 属性值的实现方法
May 06 Javascript
JavaScript 对任意元素,自定义右键菜单的实现方法
May 08 Javascript
jQuery判断checkbox是否选中的3种方法
Aug 12 Javascript
js的flv视频播放器插件使用方法
Jun 23 Javascript
HTML页面,测试JS对C函数的调用简单实例
Aug 09 Javascript
js判断输入框不能为空格或null值的实现方法
Mar 02 Javascript
node跨域转发 express+http-proxy-middleware的使用
May 31 Javascript
关于js陀螺仪的理解分析
Apr 11 Javascript
js prototype和__proto__的关系是什么
Aug 23 Javascript
javascript网页随机点名实现过程解析
Oct 15 Javascript
深入了解Vue.js 混入(mixins)
Jul 23 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小偷相关截取函数备忘
2010/11/28 PHP
php5.3后静态绑定用法详解
2016/11/11 PHP
详解yii2实现分库分表的方案与思路
2017/02/03 PHP
PHP守护进程化在C和PHP环境下的实现
2017/11/21 PHP
PHP7 新增功能
2021/03/09 PHP
jquery 子窗口操作父窗口的代码
2009/09/21 Javascript
js event事件的传递与冒泡处理
2009/12/06 Javascript
javascript 原型继承介绍
2011/08/30 Javascript
javascript高级程序设计第二版第十二章事件要点总结(常用的跨浏览器检测方法)
2012/08/22 Javascript
在线一元二次方程计算器实例(方程计算器在线计算)
2013/12/22 Javascript
JQuery实现动态表格点击按钮表格增加一行
2014/08/24 Javascript
$(&quot;&quot;).click与onclick的区别示例介绍
2014/09/25 Javascript
nodejs教程之制作一个简单的文章发布系统
2014/11/21 NodeJs
BootStrap实现轮播图效果(收藏)
2016/12/30 Javascript
基于HTML5+JS实现本地图片裁剪并上传功能
2017/03/24 Javascript
JavaScript时间戳与时间日期间相互转换
2017/12/11 Javascript
webpack中使用iconfont字体图标的方法
2018/02/22 Javascript
浅谈Vue 数据响应式原理
2018/05/07 Javascript
Javascript删除数组里的某个元素
2019/02/28 Javascript
vue实现日历备忘录功能
2020/09/24 Javascript
在layui下对元素进行事件绑定的实例
2019/09/06 Javascript
python迭代器的使用方法实例
2013/11/21 Python
利用Python中的输入和输出功能进行读取和写入的教程
2015/04/14 Python
python遍历一个目录,输出所有的文件名的实例
2018/04/23 Python
Python实现的银行系统模拟程序完整案例
2019/04/12 Python
Python 实现数据结构中的的栈队列
2019/05/16 Python
在pycharm中关掉ipython console/PyDev操作
2020/06/09 Python
浅析Python面向对象编程
2020/07/10 Python
美国复古街头服饰精品店:Need Supply Co.
2017/02/22 全球购物
BabyBjörn婴儿背带法国官网:BabyBjorn法国
2018/06/16 全球购物
网络技术专业推荐信
2014/02/20 职场文书
捐助感谢信
2015/01/22 职场文书
推广普通话宣传标语口号
2015/12/26 职场文书
JavaScript实现栈结构详细过程
2021/12/06 Javascript
25张裸眼3D图片,带你重温童年的记忆,感受3D的魅力
2022/02/06 杂记
Java Spring Boot 正确读取配置文件中的属性的值
2022/04/20 Java/Android