如何使用小程序做到回到頂部的效


      這里小程序有個組件是可以實現的,那就是scroll-view組件,他具有很多的屬性,其中我們要利用到以下兩個屬性來處理:

scroll-top Number   設置豎向滾動條位置
bindscroll EventHandle   滾動時觸發,event.detail = {scrollLeft, scrollTop, scrollHeight, scrollWidth, deltaX, deltaY}

      通過滾動觸發事件,獲取距離文檔頂部的scrollTop值,當達到一定條件【>300】的時候,顯示gotop層,針對這個層寫點擊事件,重新設置scroll-top值,偶然間發現設置scroll-top的一個bug,如果我下一次設置的值和本次scroll-top值是一樣的,那么文檔並不會有任何動作。因此我的做法是在0和1之間切換設置,具體做法如下:

<scroll-view style="height: 100%;" scroll-y="true" scroll-top="{{scrollTop.scroll_top}}" bindscroll="scrollTopFun">  
<view style="height: 11111rpx; border: solid 1px red;">  
123456  
----{{test}}  
</view>  
</scroll-view>  
  
<view style="position: absolute; bottom: 50rpx; right: 30rpx; width: 120rpx; height: 120rpx; border: solid 1px green;" wx:if="{{scrollTop.goTop_show}}" catchtap="goTopFun"></view>  

  JS:

Page({
  data: {

    test: "",
    scrollTop: {
      scroll_top: 0,
      goTop_show: false
    }
  },
  scrollTopFun: function (e) {
    console.log(e.detail);
    if (e.detail.scrollTop > 300) {//觸發gotop的顯示條件  
      this.setData({
        'scrollTop.goTop_show': true
      });
      console.log(this.data.scrollTop)
    } else {
      this.setData({
        'scrollTop.goTop_show': false
      });
    }
  },
  goTopFun: function (e) {
    var _top = this.data.scrollTop.scroll_top;//發現設置scroll-top值不能和上一次的值一樣,否則無效,所以這里加了個判斷  
    if (_top == 1) {
      _top = 0;
    } else {
      _top = 1;
    }
    this.setData({
      'scrollTop.scroll_top': _top
    });
    console.log("----");
    console.log(this.data.scrollTop)
  }
})  

  

 

最終效果如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM