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

最新文章

  1. Android开发学习——Android项目的目录结构
  2. JS解析XML文件和XML字符串
  3. wpfのuri(让你完全明白wpf的图片加载方式以及URI写法)
  4. javascript高级函数
  5. Lotus 迁移到Exchange 2010 POC 之在Exchange 2007安装Transport Suite!
  6. Tika
  7. Static的使用
  8. [Form Builder]内置函数execute_trigger、do_key详解
  9. 使用API在DigitalOcean上创建VPS
  10. 【模拟】NCPC 2014 E ceremony
  11. mysql 中文乱码的解决方法
  12. Canvas的下雪效果
  13. Educational Codeforces Round 25 Five-In-a-Row(DFS)
  14. 选择排序SelectionSort
  15. 使用boost.python封装C++库
  16. IT项目管理十大要素
  17. Python面向对象基础知识
  18. Codeforces Round #502 (in memory of Leopoldo Taravilse, Div. 1 + Div. 2)
  19. MVC3学习:利用mvc3+ajax实现级联下拉列表框
  20. python315题

热门文章

  1. Python学习---ModelForm拾遗180325
  2. struts2.5动态方法绑定问题
  3. 关于 svn
  4. Mycat分片规则详解
  5. 【转载】 socket recv 和 read
  6. memset struct含有string的崩溃
  7. Linux 下安装配置 JDK7 配置环境(debian 7)
  8. Curator 基本API
  9. 1070. [SCOI2007]修车【费用流】
  10. C++的四种显示类型转换