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

溫馨提示×

溫馨提示×

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

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

vue2怎么實現帶有阻尼下拉加載功能

發布時間:2023-02-20 14:10:17 來源:億速云 閱讀:125 作者:iii 欄目:編程語言

這篇“vue2怎么實現帶有阻尼下拉加載功能”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“vue2怎么實現帶有阻尼下拉加載功能”文章吧。

在vue中,需要綁定觸發的事件

<div
  id="testchatBox"
  class="chatWrap"
  :style="{paddingTop: chatScroollTop + 'px'}"
  @touchstart="touchStart" 
  @touchmove="touchMove"
  @touchend="touchEnd">
</div>

代碼片段使用到了三個回調函數:

  • touchstart: 手指觸摸到屏幕的那一刻的時候

  • touchmove: 手指在屏幕上移動的時候

  • touchend: 手指離開屏幕的時候

從paddingTop可以看出,我們是通過控制這個容器距離的頂部的padding來實現下拉的效果。所以說我們的重調就是通過上面的三個回調函數來確定chatScroollTop的值。

通過chatScroollTop 這個命名就可以知道,我們這個下拉刷新是用在聊天框容器當中.

我們需要使用這些變量:

data() {
  return {
    chatScroollTop: 0, // 容器距離頂部的距離 
    isMove: false, // 是否處于touchmove狀態
    startY: 0, // 當前手指在屏幕中的y軸值
    pageScrollTop: 0, // 滾動條當前的縱坐標
    
  }
}

三個回調函數對應三個階段,而我們核心代碼也分為三個部分:

第一部分:初始化當前容器的到頂部的距離,以及初始化當前是否處于滑動的狀態,并獲取當前滾動條的縱坐標。

touchStart(e) {
  // e代表該事件對象,e.targetTouches[0].pageY可以拿到手指按下的 y軸點
  this.startY = e.targetTouches[0].pageY
  // 開啟下拉刷新狀態
  this.isMove = false
  this.pageScrollTop = document.documentElement && document.documentElement.scrollTop
}

第二部分:根據當前手指當前距離觸摸屏幕時刻的縱坐標差來確定容器和頂部的距離。但是由于不能一直的滑動,所以給了一個0 -> 80的氛圍。為了讓滑動更加的有趣,添加了一個step步進值來調整滑動的距離比例,所謂的距離比例就是手指距離一開始的距離越遠,那么容量跟著滑動的距離就越短。實現一個類似阻尼的效果。

touchMove(e) {
  // 這個 touchMove,只要頁面在動都會發生的,所以 touching就起作用了
  // 獲取移動的距離
  let diff = e.targetTouches[0].pageY - this.startY
  let step = 60
  if (diff > 0 && diff < 80 && this.pageScrollTop === 0) {
     step++ // 越來越大
     this.chatScroollTop += (diff / (step * 0.1)) // 越向下給人的阻力感越大
     this.isMove = true
  }
}

第三部分:手指松開之后,給一個距離頂部的距離是為了添加加載滾動條。

  touchEnd() {
    if(this.isMove) {
      this.chatScroollTop = 40
      this.downCallback() // api拉取數據
    }
  }
  async downCallback() {
    try {
       // 拿數據 
    } catch() {} 
    finall{
      this.chatScrollTop = 0
    }
  }

以上就是關于“vue2怎么實現帶有阻尼下拉加載功能”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

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

vue
AI

渭南市| 琼结县| 新丰县| 全南县| 仪陇县| 西峡县| 澜沧| 鲁甸县| 孟州市| 广平县| 峨眉山市| 达拉特旗| 临洮县| 太原市| 上杭县| 大理市| 民权县| 福泉市| 北宁市| 舟山市| 登封市| 封开县| 合江县| 镇雄县| 西吉县| 理塘县| 开封县| 昌图县| 红河县| 沂源县| 江西省| 高雄县| 班戈县| 庆安县| 墨竹工卡县| 云阳县| 翼城县| 海口市| 顺平县| 旌德县| 汉源县|