小程序scroll-view組件(個人理解)


前言:

之前寫vue的時候用到的第三方插件是better-scroll,用來處理滾動問題

剛一接觸小程序,發現似乎不需要這種better-scroll滾動這種類似功能;

不過后來用到了,哈哈哈

 

總結的問題:1.給scroll-view設置的height無效!!!(calc)

      答:設置固定高度是有效的,如px,rpx這種;當然還可以使用100vh(當前視圖頁面)

        不過我在項目中遇到的情況是,要在下面預留一塊地方(用來放功能鍵)

        我當時給<scroll-view>加了一個class,在對應的wxss文件里給它設置了一個高度:    height:calc(100%-120rpx)

        發現並沒有效果,但是寫成固定高度就可以,后來在網上找了下,才知道,

        calc失效的解決辦法:給<scroll-view>外面的容器設置height:100%;

        可以直接在給page設置一下高度,就可以使calc生效

    代碼如下:

//-------這里是wxml文件------
<scroll-view class='demo' scroll-y>
//內容
//內容
</scroll-view>        

//-------這里是wxss文件---------

//給scroll外面設置高度
page{
   height:100%;    
}
//給scroll設置高度(calc)
.demo{
  height:calc(100%-120rpx)    
}

總結的問題:2.實現返回頂部功能

      我在項目中用到了這個功能,就是一個很簡單的返回頂部功能;

      在這里有些是需要注意的:

        2-1.返回頂部按鈕的顯示和隱藏

          在data中聲明一個布爾類型的屬性    isShowBackTop :false

              wxml頁面中通過wx:if="{{isShowBackTop}}"來控制顯示和隱藏

             在<scroll-view>中我們可以通過bind:scroll="handleScroll"監聽滾動

             先獲取到滾動的y值:  const scrollTop=e.detail.scrollTop;

             聲明一個布爾值: const flag = scrollTop >= 1000;   (如果大於等於就是true,否則就是false)

             通過this.setData()方法實時改變數據

          *注意: 如果直接使用this.setData改變的話,官方是不推薦的,官方文檔中明確指出,

            請不要頻繁的調用this.setData(大概就是這個意思吧),直接使用的后果,就是頁面非常卡頓。。。

            我們可以加上一層判斷,如下:

             if(flag !== this.isShowBackTop){

               this.setData({

               isShowBackTop:flag

              })

              }

           這樣就不會頻繁的調用this.setData了

      2-2.這時候顯示隱藏的功能已經實現了,接下來就是回到頂部的功能了

               在使用<scroll-view>之前,我是直接將返回頂部的方法封裝到back-top這個組件的js文件中去了,如下:

                handleBackTop(){

                  wx.pageScrollTo({

                    scrollTop:0

                  })

                }

             后來使用了<scroll-view>發現這個功能不起作用了,於是我就自定義一個事件發給了父組件:backTop

             在官方文檔中看到可以通過scroll-top來控制高度;

             於是我就在data中創建了一個scrollTop:0;

             在wxml文件中:<scroll-view   scroll-top="{{scrollTop}}" ></scroll-view>使用了該屬性

                     <back-top   bind:backTop="backTop">接收自定義事件

             在js文件中,監聽backTop:

                    backTop(){

                      this.setData({

                        scrollTop:0

                      })

                    }

             這樣就實現了返回頂部功能

  

 

                     

            

 


免責聲明!

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



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