微信小程序列表项滑动显示删除按钮

微信小程序并没有提供列表控件,所以也没有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 {
  
}
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
            });
        }

    }
);

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java学习网

Java 语言版本整理,先到1.8版本,不全请补充

Java 语言版本 JDK 1.1.4 Sparkler 宝石 1997-09-12 JDK 1.1.5 Pumpkin 南瓜 1997-12-13 JDK 1...

2505
来自专栏Alan's Lab

[swift]读取svg图片为UIBezierPath,开心做动画

最近手痒又想整点动画玩玩,但是想了几个主意发现稍微复杂一点的手写都一定会累爆。这篇文章记录一下今天折腾的一个方案。说来简单,就是用矢量设计工具舒舒服服的做好设计...

692
来自专栏hbbliyong

你不可错过的二维码生成与解析-java后台与前端js都有

1.二维码分类   二维条码也有许多不同的码制,就码制的编码原理而言,通常分为三种类型。 线性堆叠式二维码 编码原理: 建立在一维条码基础之上,按需要堆积成...

4638
来自专栏生信技能树

下载TCGA所有癌症的maf文件做signature分析

才sanger研究所已经做好了这个分析,但是值得我们重复一下,效果如下: ? TCGA所有癌症的mutation signature 首先TCGA所有癌症的ma...

49012
来自专栏小特工作室

基于iTextSharp的PDF文档操作

  公司是跨境电商,需要和各种物流打交道,需要把东西交给物流,让他们发到世界各地。其中需要物流公司提供一个运单号,来追踪货物到达哪里?!   最近在和DHL物流...

20110
来自专栏我和未来有约会

[Silverlight动画]转向行为 - 躲避行为

躲避就是追捕的反行为。就像追捕类似于寻找,躲避类似于避开。 本质上讲,是预测出机车将要去到的位置并远离它。在这里所有的原则都和追捕相同。实际上,就连实现都几乎一...

1918
来自专栏kwcode

c# asp.net 实现分页(pager)功能

分页PagerHelper辅助类 using System; using System.Web; public class PagerHelper { ...

3075
来自专栏一“技”之长

iOS中UIImageView用法总结 原

- (instancetype)initWithImage:(UIImage *)image;

481
来自专栏哈雷彗星撞地球

iOS Bluetooth 打印小票(二)CoreBluetooth的封装蓝牙打印机操作封装补充打印没反应?

在上一篇中介绍了打印小票所需要的命令,这一篇介绍Bluetooth连接蓝牙和打印小票的全过程。

1372
来自专栏游戏杂谈

as3与php 上传多张图片demo

2、在一次添加的图片中如果超出最大上传数,忽略本次选中的所有图片(又得重新选一次,此现象普通存在于目前各大网站的flash批量上传中)

882

扫码关注云+社区