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

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

html实现一个电子相册

实现代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>fa...

58410
来自专栏小程序的道路

微信小程序布局单位的使用

rpx单位是微信小程序中css的尺寸单位,rpx可以根据屏幕宽度进行自适应。官方推荐微信小程序可以用iPhone6 作为视觉稿的标准。规定屏幕宽为750rpx。...

2775
来自专栏落影的专栏

直播APP常用动画效果

介绍 记录、总结开发遇到一些问题,大家一起交流学习。 这次带来,对直播APP的常用动画总结。 直播Live 效果展示 下面是一个很多平台都有的入门豪华礼物动...

5478
来自专栏游戏杂谈

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

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

1113
来自专栏Youngxj

Canvas画板

3424
来自专栏GIS讲堂

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

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

1633
来自专栏程序员互动联盟

【专业技术】Win32创建异形窗口

大家都见过在windows下各种气泡窗口、输入法窗口已经其他一些窗口,这些窗口看起来不像传统的windows窗那样,上面是标题栏,下面是窗口的客户区。这...

78111
来自专栏進无尽的文章

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

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

1582
来自专栏跟着阿笨一起玩NET

winform窗体MaximizeBox

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

自定义UIPageControl、UITextView占位视图

2159

扫码关注云+社区

领取腾讯云代金券