zoukankan      html  css  js  c++  java
  • 小程序 之左滑删除

    一、效果图

    二、wxml代码

    <view class="page">
      <scroll-view scroll-y="{{isScroll}}" style='height:{{windowHeight}}px'>
        <block wx:key="item" wx:for="{{data}}">
          <view data-index='{{index}}' class="order-item" bindtouchstart="drawStart" bindtouchmove="drawMove" bindtouchend="drawEnd" style="right:{{item.right}}rpx">
            <view class="content">{{item.content}}</view>
            <view class="remove" bindtap="delItem">删除 </view>
          </view>
          <my-line height="4"></my-line>
        </block>
      </scroll-view>
    </view>

    三、js代码

    const app = getApp();
    Page({
      data: {
        delBtnWidth: 160,
        data: [{ content: "公开", right: 0 }, { content: "同事", right: 0 }, { content: "客户", right: 0 }],
        isScroll: true,
        windowHeight: 0,
      },
      onLoad: function (options) {
        var that = this;
        wx.getSystemInfo({
          success: function (res) {
            that.setData({
              windowHeight: res.windowHeight
            });
          }
        });
      },
      drawStart: function (e) {
        var touch = e.touches[0]
        for (var index in this.data.data) {
          var item = this.data.data[index]
          item.right = 0
        }
        this.setData({
          data: this.data.data,
          startX: touch.clientX,
        })
    
      },
      drawMove: function (e) {
        var touch = e.touches[0]
        var item = this.data.data[e.currentTarget.dataset.index]
        var disX = this.data.startX - touch.clientX
    
        if (disX >= 20) {
          if (disX > this.data.delBtnWidth) {
            disX = this.data.delBtnWidth
          }
          item.right = disX
          this.setData({
            isScroll: false,
            data: this.data.data
          })
        } else {
          item.right = 0
          this.setData({
            isScroll: true,
            data: this.data.data
          })
        }
      },
      drawEnd: function (e) {
        var item = this.data.data[e.currentTarget.dataset.index]
        if (item.right >= this.data.delBtnWidth / 2) {
          item.right = this.data.delBtnWidth
          this.setData({
            isScroll: true,
            data: this.data.data,
          })
        } else {
          item.right = 0
          this.setData({
            isScroll: true,
            data: this.data.data,
          })
        }
      },
      delItem: function (e) {
    
      }
    })

    四、css代码

    .order-item {
      height: 100rpx;
      width: 100%;
      display: flex;
      position: relative;
      line-height: 100rpx;
      padding: 0 30rpx;
      background: #fff;
      box-sizing: border-box;
    }
    
    .remove {
      width: 160rpx;
      height: 100%;
      background-color: red;
      color: white;
      position: absolute;
      top: 0;
      right: -160rpx;
      display: flex;
      justify-content: center;
      align-items: center;
    }
  • 相关阅读:
    内置函数zip,map,even
    异常处理
    requests模块(请求接口)
    网络编程之urllib
    cookie/session区别
    测试环境搭建流程
    接口开发01--mock接口
    操作Redis--hash/key-value
    操作excel--xlwt/xlrd/xlutils模块
    可变对象 不可变对象 浅拷贝 深拷贝
  • 原文地址:https://www.cnblogs.com/yang-2018/p/11327848.html
Copyright © 2011-2022 走看看