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

微信小程序并没有提供列表控件,所以也没有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 条评论
登录 后参与评论

相关文章

来自专栏游戏杂谈

Flash对象插入到网页中的3px问题

我记得我已经遇到过,不过今天又遇到了,而且浪费了大量的时候在上面,甚至怀疑自己写的脚本有问题,花了几乎一个下午来调试这个问题。最后发现是样式导致的…

1143
来自专栏DeveWork

jQuery仿极客公园火箭发射“返回顶部”效果(优化篇)

承接上一篇《jQuery仿极客公园火箭发射“返回顶部”效果(初始篇)》,本文将对前一篇的代码进行优化。还是转载自andyliu: 先给出个演示Demo:演示地址...

2096
来自专栏wOw的Android小站

[iOS] 列表滑动展开隐藏头部HeaderView

首先看一下BiliBili客户端的视频浏览界面。默认界面Header完全展开,并且Header显示AV号(别乱想,就是视频编号了)以及播放按钮。滑动之后Head...

6282
来自专栏進无尽的文章

实践 -实现一款中间凸起的TabBar

这是看到一篇文章后感觉很有意思于是就把自己的效果改了改实现了一下,文末有原文链接。

1862
来自专栏iOS开发攻城狮的集散地

自定义UIPageControl、UITextView占位视图

2199
来自专栏PPV课数据科学社区

【学习】七天搞定SAS(四):数据输出

弄清楚了基本的PROC之后,开始研究SAS的输出...毕竟有了数据处理的结果之后,还要有一个比较舒服的输出格式才可以嘛。 SAS的结果发送系统:ODS SAS里...

3998
来自专栏GIS讲堂

ol4加载pbf矢量切片与样式定义

看了一下mapbox的矢量切片的展示方式,其核心是定义的一个样式配置文件,我就在想:Ol4里面我是否通过styleFunction的方式实现同样的效果呢,折腾了...

1843
来自专栏非典型技术宅

iOS动画系列之五:基础动画之缩放篇&旋转篇Swift+OC1. 思路和最终成果2. 抽取公共方法3. 懒加载Layer4. 添加动画

1631
来自专栏数据结构与算法

菜鸡博客开……开……开源了!

因为很多人找我要过博皮源码,所以本宝宝经过深思熟虑,最终决定把自己的源码分享给大家!

1654
来自专栏Youngxj

Canvas画板

3764

扫码关注云+社区

领取腾讯云代金券