前言:
之前寫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
})
}
這樣就實現了返回頂部功能