1. 程式人生 > >微信小程式例項:跳轉到頂部例項

微信小程式例項:跳轉到頂部例項

      總所周知,小程式不能操作dom,那麼我們要怎麼實現在頁面滾動到一定條件的時候,顯示gotop圖示,點選後跳轉到頁面的頂部呢?

      這裡小程式有個元件是可以實現的,那就是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>

注:這裡去要去wxss檔案設定page跟元件的高度=》100%,設定如下:

page{ height: 100%;}

      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)
  }
})

      最終演示效果如下: