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

发布时间 - 2026-01-11 00:38:58    点击率:

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

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


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何快速查询网站的真实建站时间?  Laravel如何自定义分页视图?(Pagination示例)  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  Laravel如何与Pusher实现实时通信?(WebSocket示例)  Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】  Laravel如何实现数据库事务?(DB Facade示例)  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  Win11关机界面怎么改_Win11自定义关机画面设置【工具】  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  详解Huffman编码算法之Java实现  Laravel路由怎么定义_Laravel核心路由系统完全入门指南  网站页面设计需要考虑到这些问题  Firefox Developer Edition开发者版本入口  英语简历制作免费网站推荐,如何将简历翻译成英文?  ,南京靠谱的征婚网站?  Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权  简单实现Android文件上传  百度浏览器如何管理插件 百度浏览器插件管理方法  Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程  微信小程序 HTTPS报错整理常见问题及解决方案  Laravel如何实现API速率限制?(Rate Limiting教程)  Android自定义listview布局实现上拉加载下拉刷新功能  网站建设整体流程解析,建站其实很容易!  Python制作简易注册登录系统  大连网站制作公司哪家好一点,大连买房网站哪个好?  Android滚轮选择时间控件使用详解  Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】  个人摄影网站制作流程,摄影爱好者都去什么网站?  深圳网站制作培训,深圳哪些招聘网站比较好?  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  如何在七牛云存储上搭建网站并设置自定义域名?  网站优化排名时,需要考虑哪些问题呢?  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  如何快速搭建支持数据库操作的智能建站平台?  简单实现Android验证码  如何在IIS7上新建站点并设置安全权限?  如何在建站之星绑定自定义域名?  Laravel storage目录权限问题_Laravel文件写入权限设置  Linux安全能力提升路径_长期防护思维说明【指导】  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  Laravel如何创建自定义中间件?(Middleware代码示例)  装修招标网站设计制作流程,装修招标流程?  实现点击下箭头变上箭头来回切换的两种方法【推荐】  Laravel怎么在Blade中安全地输出原始HTML内容  香港服务器网站推广:SEO优化与外贸独立站搭建策略  PHP正则匹配日期和时间(时间戳转换)的实例代码  Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】  python中快速进行多个字符替换的方法小结  如何在阿里云购买域名并搭建网站?