91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在微信小程序中利用movable-view實現滑動刪除效果

發布時間:2021-05-12 18:03:00 來源:億速云 閱讀:270 作者:Leah 欄目:web開發

怎么在微信小程序中利用movable-view實現滑動刪除效果?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

1、wxml布局

<view class="list">
  <view class="row" wx:for="{{list}}" wx:key="id">
    <movable-area class="list_item">
     <!-- 坑就在這里,當你向右滑動一點點距離的時候它就停住了,不回去。坑 -->
      <movable-view class="itmem_wrap" direction="horizontal" inertia="{{true}}" out-of-bounds="{{true}}" x="{{item.x}}" damping="{{60}}" data-index="{{index}}" bind:touchstart="touchMoveStartHandle" bind:touchend="touchMoveEndHandle">
        {{'滑動刪除' + item.id}}
      </movable-view>
      <view class="delete_wrap">
        <view class="delete_btn">刪除</view>
      </view>
    </movable-area>
  </view>
</view>

2、wxss(這里我用的less布局,布局很重要)

page {
  background-color: #efefef;
}
 
.list {
  padding: 30rpx 30rpx 0;

  .row {
    width: 100%;
    overflow: hidden;
    margin-bottom: 30rpx;

    .list_item {
      border-radius: 12rpx;
      position: relative;
      left: -120rpx;
      width: calc(100% + 120rpx);
      height: 160rpx;

      .itmem_wrap {
        width: calc(100% - 120rpx);
        height: 100%;
        display: flex;
        align-items: center;
        justify-content: center;
        position: relative;
        left: 120rpx;
        z-index: 2;
        background-color: #fff;
      }

      .delete_wrap {
        position: absolute;
        right: 0;
        top: 0;
        width: 50%;
        height: 100%;
        background-color: rgb(219, 54, 54);
        display: flex;
        justify-content: flex-end;
        z-index: 1;

        .delete_btn {
          width: 120rpx;
          height: 100%;
          display: flex;
          justify-content: center;
          align-items: center;
          color: #fff;
        }
      }
    }
  }
}

3、JavaScript

const app = getApp()

Page({
  data: {
    list: [{
        id: 1
      },
      {
        id: 2
      },
      {
        id: 3
      },
      {
        id: 4
      },
      {
        id: 5
      },
      {
        id: 6
      },
      {
        id: 7
      },
      {
        id: 8
      },
      {
        id: 9
      },
      {
        id: 10
      }
    ],
    startX: '',
    startY: ''
  },
  onLoad: function () {
    this.setListX();
  },
  // 給每一項設置x值
  setListX() {
    this.data.list.map(item => {
      item.x = 0;
    })
    this.setData({
      list: this.data.list
    })
  },
  // 開始滑動
  touchMoveStartHandle(e) {
   // 我們要記錄滑動開始的坐標點,后面計算要用到
    if (e.touches.length == 1) {
      this.setData({
        startX: e.touches[0].clientX,
        startY: e.touches[0].clientY
      });
    }
  },
  // 滑動事件處理,一次只能滑出一個刪除按鈕 為了防止滑動出現抖動,我們用滑動結束事件
  touchMoveEndHandle: function (e) {
    var currentIndex = e.currentTarget.dataset.index, //當前索引
      startX = this.data.startX, //開始X坐標
      startY = this.data.startY, //開始Y坐標
      touchMoveEndX = e.changedTouches[0].clientX, //滑動變化X坐標
      touchMoveEndY = e.changedTouches[0].clientY, //滑動變化Y坐標
      //獲取滑動角度
      angle = this.angle({
        X: startX,
        Y: startY
      }, {
        X: touchMoveEndX,
        Y: touchMoveEndY
      });
    //滑動超過50度角 return,防止上下滑動觸發
    if (Math.abs(angle) > 50) return;
    this.data.list.map((item, index) => {
      if (touchMoveEndX > startX) {
        // 右滑
        if (index == currentIndex) item.x = 0;
      } else {
        // 左滑
        item.x = -120
        if (index != currentIndex) item.x = 0;
      }
    })
    this.setData({
      list: this.data.list
    })
  },
  /**
   * 計算滑動角度
   * start 起點坐標
   * end 終點坐標
   * Math.PI 表示一個圓的周長與直徑的比例,約為 3.14159;PI就是圓周率π,PI是弧度制的π,也就是180°
   */
  angle: function (start, end) {
    var _X = end.X - start.X,
      _Y = end.Y - start.Y
    return 360 * Math.atan(_Y / _X) / (2 * Math.PI);
  }
})

關于怎么在微信小程序中利用movable-view實現滑動刪除效果問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

信阳市| 静宁县| 郴州市| 抚松县| 正阳县| 西青区| 万源市| 柳州市| 晋城| 呼和浩特市| 迁西县| 绥化市| 左贡县| 勃利县| 嵊泗县| 麻城市| 黔西县| 彰化县| 黔西| 余庆县| 西和县| 科尔| 木里| 石阡县| 云浮市| 成武县| 鄱阳县| 中方县| 临沭县| 鄂伦春自治旗| 山西省| 耿马| 黔东| 常宁市| 牡丹江市| 涟水县| 新源县| 江永县| 漠河县| 都江堰市| 玉环县|