微信小程序返回到頂部功能的簡單實現(xiàn)
業(yè)務需求
今天公司的PM給我提了個需求,微信小程序需要做一個返回頂部的功能,返回頂部的按鈕也是需要滑動到頁面指定內容顯示過后才出現(xiàn)的,微信小程序中沒有a標簽,我通過查看小程序文檔結合思路將此功能實現(xiàn)
頁面結構
我們一個頁面中有一個
nav類名的返回頂部元素,和一個text類名盒子用于作為顯示返回頂部元素的界點
<view class="page">
<!-- 返回頂部按鈕 -->
<view class="nav" bindtap="backTop" wx:if="{{isTop}}">返回頂部</view>
<!-- 內容 -->
<view class="text" id="pos">
展示頂部返回按鈕
</view>
</view>樣式
頁面大盒子我們使用背景顏色漸變色給一個高度用于做出滾動的效果,然后將返回頂部的按鈕和頁面中的內容設置下樣式
/* 頁面大盒子樣式 */
.page {
width: 100%;
height: 1500px;
background: linear-gradient(to bottom, red, blue, #fff, yellow);
padding-top: 700rpx;
}
/* 返回頂部按鈕樣式 */
.nav {
position: fixed;
right: 10rpx;
bottom: 50rpx;
display: flex;
align-items: center;
justify-content: center;
width: 70rpx;
height: 100rpx;
padding: 10rpx;
background: rgb(216, 148, 148);
border-radius: 10rpx;
}
/* 內容樣式 */
.text {
margin-top: 500rpx;
color: #fff;
display: flex;
justify-content: center;
align-items: center;
}實現(xiàn)邏輯
我們通過頁面加載獲取到頁面內容距離頂部的高度,然后將此高度設置為指定滑動距離,然后再通過onPageScroll方法去監(jiān)聽頁面滑動控制返回頂部變量的改變,以此控制返回頂部按鈕的顯示與隱藏,然后在給返回頂部按鈕綁定一個backTop方法,點擊返回頂部按鈕就通過微信小程序的API控制頁面直接返回頂部
Page({
data: {
//滑動的指定距離,用于作為返回頂部標記改變的界點
top: 0,
// 返回頂部標記,頂部標記為true則返回頂部按鈕顯示,頂部標記為false,則返回頂部按鈕不展示
isTop: false
},
/**
* @function 返回頂部執(zhí)行方法
*/
backTop() {
//這是微信小程序給我們提供的頁面滾動API方法
wx.pageScrollTo({
// 頁面滾動的距離
scrollTop: 0,
// 滾動動畫執(zhí)行時間,我們這里就讓他執(zhí)行100毫秒
duration: 100
})
},
/**
*
* @function 監(jiān)聽頁面滑動
*/
onPageScroll(e) {
// 使用ES6的方式頁面滾動的event對象中的滾動距離scrollTop變量解構出來
let {
scrollTop
} = e;
// 將滑動的指定距離變量和是否顯示返回頂部按鈕標記也解構出來
let {
top,
isTop
} = this.data;
// 判斷當前滾動的距離是否大于等于我們設定的滑動的指定距離且當前返回頂部按鈕標記為false
if (scrollTop >= top && !isTop) {
// 進入則表示滑動達到了指定位置,我們將返回頂部標記改為true將返回頂部按鈕進行展示出來
this.setData({
isTop: true
})
} else {
// 如果上述條件則表示要么是未達到執(zhí)行位置或者已經(jīng)返回頂部標記為true了,所以我們這里需要在判斷一下,當前的滾動距離是否小于我們設定的指定滑動距離和當前返回頂部標記是否為true,這樣我們就只判斷當前滑動到指定位置和滑動小于指定位置,如果大于滑動指定位置我們就不做處理
if (scrollTop <= top && isTop) {
// 如果小于滑動指定距離,我們就將返回頂部按鈕顯示標記改為false
this.setData({
isTop: false
})
}
}
},
/**
* @function 獲取元素
* @return {number} id
*/
query(id, fn) {
// 通過微信的方式進行獲取元素對象進行操作,接受值為id,我們用回調函數(shù)進行處理
let query = wx.createSelectorQuery();
query.select(id).boundingClientRect()
query.selectViewport().scrollOffset()
query.exec(fn)
},
onLoad() {
// 我們將當前頁面中的內容id傳遞進去,通過內容距離頂部的高度,設置滑動的指定距離
this.query("#pos", (e) => {
let {
top
} = e[0];
this.setData({
top
})
})
}
})總結
到此這篇關于微信小程序返回到頂部功能的文章就介紹到這了,更多相關微信小程序返回到頂部內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
js在指定位置增加節(jié)點函數(shù)insertBefore()用法實例
這篇文章主要介紹了js在指定位置增加節(jié)點函數(shù)insertBefore()用法,實例分析了insertBefore()函數(shù)追加結點的技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-01-01
解決bootstrap導航欄navbar在IE8上存在缺陷的方法
這篇文章主要為大家詳細介紹了解決bootstrap導航欄navbar在IE8上存在缺陷的方法,需要的朋友可以參考下2016-07-07
js prototype 格式化數(shù)字 By shawl.qiu
js prototype 格式化數(shù)字 By shawl.qiu...2007-04-04

