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

微信小程序并没有提供列表控件,所以也没有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
});
}
}
);
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# 微信小程序列表项滑动显示删除按钮
# 小程序 列表滑动删除
# 希望能
# 很简单
# 哈哈哈哈
# 干了
# 谢谢大家
# unit
# summary
# wxss
# delete
# remark
# count
# recordMove
# catchtouchmove
# recordStart
# type
# recordEnd
# bindtouchend
# row
# direction
# flex
相关文章:
专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?
XML的“混合内容”是什么 怎么用DTD或XSD定义
如何在阿里云虚拟服务器快速搭建网站?
建站主机选哪种环境更利于SEO优化?
网站按钮制作软件,如何实现网页中按钮的自动点击?
如何在Golang中使用replace替换模块_指定本地或远程路径
如何在企业微信快速生成手机电脑官网?
制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?
动图在线制作网站有哪些,滑动动图图集怎么做?
如何在Golang中指定模块版本_使用go.mod控制版本号
小程序网站制作需要准备什么资料,如何制作小程序?
javascript中的try catch异常捕获机制用法分析
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
网站制作说明怎么写,简述网页设计的流程并说明原因?
建站之星如何一键生成手机站?
建站主机SSH密钥生成步骤及常见问题解答?
家庭服务器如何搭建个人网站?
建站之星在线客服如何快速接入解答?
建站之星如何助力网站排名飙升?揭秘高效技巧
网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
威客平台建站流程解析:高效搭建教程与设计优化方案
如何在阿里云域名上完成建站全流程?
如何在腾讯云服务器上快速搭建个人网站?
长沙企业网站制作哪家好,长沙水业集团官方网站?
建站VPS选购需注意哪些关键参数?
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
北京网站制作网页,网站升级改版需要多久?
香港服务器网站推广:SEO优化与外贸独立站搭建策略
如何基于云服务器快速搭建网站及云盘系统?
如何处理“XML格式不正确”错误 常见XML well-formed问题解决方法
如何用5美元大硬盘VPS安全高效搭建个人网站?
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
建站org新手必看:2024最新搭建流程与模板选择技巧
TestNG的testng.xml配置文件怎么写
建站之星安装步骤有哪些常见问题?
如何快速搭建响应式可视化网站?
如何在建站之星网店版论坛获取技术支持?
实惠建站价格推荐:2025年高性价比自助建站套餐解析
如何批量查询域名的建站时间记录?
如何用低价快速搭建高质量网站?
如何设计高效校园网站?
高端网站建设与定制开发一站式解决方案 中企动力
建站之星安装提示数据库无法连接如何解决?
北京网站制作公司哪家好一点,北京租房网站有哪些?
已有域名建站全流程解析:网站搭建步骤与建站工具选择
javascript基本数据类型及类型检测常用方法小结
如何登录建站主机?访问步骤全解析
建站之星3.0如何解决常见操作问题?
*请认真填写需求信息,我们会在24小时内与您取得联系。