微信小程序返回到頂部功能的簡(jiǎn)單實(shí)現(xiàn)
業(yè)務(wù)需求
今天公司的PM給我提了個(gè)需求,微信小程序需要做一個(gè)返回頂部的功能,返回頂部的按鈕也是需要滑動(dòng)到頁(yè)面指定內(nèi)容顯示過(guò)后才出現(xiàn)的,微信小程序中沒(méi)有a標(biāo)簽,我通過(guò)查看小程序文檔結(jié)合思路將此功能實(shí)現(xiàn)
頁(yè)面結(jié)構(gòu)
我們一個(gè)頁(yè)面中有一個(gè)
nav類(lèi)名的返回頂部元素,和一個(gè)text類(lèi)名盒子用于作為顯示返回頂部元素的界點(diǎn)
<view class="page">
<!-- 返回頂部按鈕 -->
<view class="nav" bindtap="backTop" wx:if="{{isTop}}">返回頂部</view>
<!-- 內(nèi)容 -->
<view class="text" id="pos">
展示頂部返回按鈕
</view>
</view>樣式
頁(yè)面大盒子我們使用背景顏色漸變色給一個(gè)高度用于做出滾動(dòng)的效果,然后將返回頂部的按鈕和頁(yè)面中的內(nèi)容設(shè)置下樣式
/* 頁(yè)面大盒子樣式 */
.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;
}
/* 內(nèi)容樣式 */
.text {
margin-top: 500rpx;
color: #fff;
display: flex;
justify-content: center;
align-items: center;
}實(shí)現(xiàn)邏輯
我們通過(guò)頁(yè)面加載獲取到頁(yè)面內(nèi)容距離頂部的高度,然后將此高度設(shè)置為指定滑動(dòng)距離,然后再通過(guò)onPageScroll方法去監(jiān)聽(tīng)頁(yè)面滑動(dòng)控制返回頂部變量的改變,以此控制返回頂部按鈕的顯示與隱藏,然后在給返回頂部按鈕綁定一個(gè)backTop方法,點(diǎn)擊返回頂部按鈕就通過(guò)微信小程序的API控制頁(yè)面直接返回頂部
Page({
data: {
//滑動(dòng)的指定距離,用于作為返回頂部標(biāo)記改變的界點(diǎn)
top: 0,
// 返回頂部標(biāo)記,頂部標(biāo)記為true則返回頂部按鈕顯示,頂部標(biāo)記為false,則返回頂部按鈕不展示
isTop: false
},
/**
* @function 返回頂部執(zhí)行方法
*/
backTop() {
//這是微信小程序給我們提供的頁(yè)面滾動(dòng)API方法
wx.pageScrollTo({
// 頁(yè)面滾動(dòng)的距離
scrollTop: 0,
// 滾動(dòng)動(dòng)畫(huà)執(zhí)行時(shí)間,我們這里就讓他執(zhí)行100毫秒
duration: 100
})
},
/**
*
* @function 監(jiān)聽(tīng)頁(yè)面滑動(dòng)
*/
onPageScroll(e) {
// 使用ES6的方式頁(yè)面滾動(dòng)的event對(duì)象中的滾動(dòng)距離scrollTop變量解構(gòu)出來(lái)
let {
scrollTop
} = e;
// 將滑動(dòng)的指定距離變量和是否顯示返回頂部按鈕標(biāo)記也解構(gòu)出來(lái)
let {
top,
isTop
} = this.data;
// 判斷當(dāng)前滾動(dòng)的距離是否大于等于我們?cè)O(shè)定的滑動(dòng)的指定距離且當(dāng)前返回頂部按鈕標(biāo)記為false
if (scrollTop >= top && !isTop) {
// 進(jìn)入則表示滑動(dòng)達(dá)到了指定位置,我們將返回頂部標(biāo)記改為true將返回頂部按鈕進(jìn)行展示出來(lái)
this.setData({
isTop: true
})
} else {
// 如果上述條件則表示要么是未達(dá)到執(zhí)行位置或者已經(jīng)返回頂部標(biāo)記為true了,所以我們這里需要在判斷一下,當(dāng)前的滾動(dòng)距離是否小于我們?cè)O(shè)定的指定滑動(dòng)距離和當(dāng)前返回頂部標(biāo)記是否為true,這樣我們就只判斷當(dāng)前滑動(dòng)到指定位置和滑動(dòng)小于指定位置,如果大于滑動(dòng)指定位置我們就不做處理
if (scrollTop <= top && isTop) {
// 如果小于滑動(dòng)指定距離,我們就將返回頂部按鈕顯示標(biāo)記改為false
this.setData({
isTop: false
})
}
}
},
/**
* @function 獲取元素
* @return {number} id
*/
query(id, fn) {
// 通過(guò)微信的方式進(jìn)行獲取元素對(duì)象進(jìn)行操作,接受值為id,我們用回調(diào)函數(shù)進(jìn)行處理
let query = wx.createSelectorQuery();
query.select(id).boundingClientRect()
query.selectViewport().scrollOffset()
query.exec(fn)
},
onLoad() {
// 我們將當(dāng)前頁(yè)面中的內(nèi)容id傳遞進(jìn)去,通過(guò)內(nèi)容距離頂部的高度,設(shè)置滑動(dòng)的指定距離
this.query("#pos", (e) => {
let {
top
} = e[0];
this.setData({
top
})
})
}
})總結(jié)
到此這篇關(guān)于微信小程序返回到頂部功能的文章就介紹到這了,更多相關(guān)微信小程序返回到頂部?jī)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
js實(shí)現(xiàn)移動(dòng)端圖片滑塊驗(yàn)證功能
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)移動(dòng)端圖片滑塊驗(yàn)證功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-09-09
JavaScript中的"=、==、==="區(qū)別講解
今天小編就為大家分享一篇關(guān)于JavaScript中的"=、==、==="區(qū)別講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-01-01
輕松理解Javascript變量的相關(guān)問(wèn)題
這篇文章主要給大家介紹了關(guān)于Javascript變量的相關(guān)問(wèn)題,文中給出了詳細(xì)的介紹和示例代碼,相信對(duì)大家的理解和學(xué)習(xí)具有一定的參考借鑒價(jià)值,有需要的朋友們下面來(lái)一起看看吧。2017-01-01
JS函數(shù)動(dòng)態(tài)傳遞參數(shù)的方法分析【基于arguments對(duì)象】
這篇文章主要介紹了JS函數(shù)動(dòng)態(tài)傳遞參數(shù)的方法,結(jié)合實(shí)例形式分析了javascript通過(guò)arguments對(duì)象獲取傳遞參數(shù)的相關(guān)操作技巧,需要的朋友可以參考下2019-06-06
Ajax提交與傳統(tǒng)表單提交的區(qū)別說(shuō)明
本篇文章主要是對(duì)Ajax提交與傳統(tǒng)表單提交的區(qū)別進(jìn)行了詳細(xì)的介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2014-02-02
JavaScript的垃圾回收機(jī)制與內(nèi)存管理
這篇文章主要介紹了JavaScript的垃圾回收機(jī)制與內(nèi)存管理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
javascript實(shí)現(xiàn)tabs選項(xiàng)卡切換效果(自寫(xiě)原生js)
常用的頁(yè)面效果有彈出層效果,無(wú)縫滾動(dòng)效果,選項(xiàng)卡切換效果,接下來(lái)與大家分享一款自己用原生javascript寫(xiě)的選項(xiàng)卡切換效果,感興趣的朋友可以參考下哈2013-03-03

