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

发布时间 - 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


相关推荐: Win11关机界面怎么改_Win11自定义关机画面设置【工具】  Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】  Laravel如何使用Service Container和依赖注入?(代码示例)  Python3.6正式版新特性预览  宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程  ,网页ppt怎么弄成自己的ppt?  在线教育网站制作平台,山西立德教育官网?  如何快速建站并高效导出源代码?  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  Android仿QQ列表左滑删除操作  大同网页,大同瑞慈医院官网?  UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】  魔方云NAT建站如何实现端口转发?  Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法  Laravel如何使用Blade组件和插槽?(Component代码示例)  三星网站视频制作教程下载,三星w23网页如何全屏?  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出  北京企业网站设计制作公司,北京铁路集团官方网站?  Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】  VIVO手机上del键无效OnKeyListener不响应的原因及解决方法  如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】  C语言设计一个闪闪的圣诞树  如何在万网利用已有域名快速建站?  文字头像制作网站推荐软件,醒图能自动配文字吗?  百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏  Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧  使用C语言编写圣诞表白程序  谷歌Google入口永久地址_Google搜索引擎官网首页永久入口  如何用腾讯建站主机快速创建免费网站?  Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明  Python数据仓库与ETL构建实战_Airflow调度流程详解  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  HTML 中如何正确使用模板变量为元素的 name 属性赋值  ,南京靠谱的征婚网站?  ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】  香港服务器部署网站为何提示未备案?  js代码实现下拉菜单【推荐】  Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】  Android使用GridView实现日历的简单功能  微信小程序 canvas开发实例及注意事项  高防服务器租用指南:配置选择与快速部署攻略  如何在腾讯云服务器上快速搭建个人网站?  详解Huffman编码算法之Java实现  网站图片在线制作软件,怎么在图片上做链接?  通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】  如何快速搭建FTP站点实现文件共享?  如何快速搭建高效简练网站?  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  如何快速上传建站程序避免常见错误?