溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

小程序中如何使用scroll-view實現(xiàn)錨點滑動

發(fā)布時間:2021-01-28 12:01:43 來源:億速云 閱讀:651 作者:小新 欄目:移動開發(fā)

這篇文章主要介紹了小程序中如何使用scroll-view實現(xiàn)錨點滑動,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

前言

最近開始做小程序,通讀一遍文檔再上手并不算難,但不得不說小程序里還是有一些坑。這里說一下如何實現(xiàn)頁面錨點跳轉(zhuǎn),一個城市列表的效果示意圖如下:

小程序中如何使用scroll-view實現(xiàn)錨點滑動

因為在微信小程序的環(huán)境中不能想在瀏覽器里設置標簽,或者操作dom滾動,傳統(tǒng)做法就行不通了,一切都得按小程序的文檔來。

一開始我們的做法是使用boundingClientRect()方法獲取每個錨點的坐標,然后再用wx.pageScrollTo()方法滑動過去。結(jié)果發(fā)現(xiàn)效果不是很好,因為boundingClientRect方法返回的每個點的坐標會隨著屏幕滑動而變化,可能還會引起頁面抖動,最后還是選擇scroll-view(可滾動視圖區(qū)域)組件來實現(xiàn)錨點效果。

具體實現(xiàn)

具體API就不贅述了,可以去看官方文檔,這里講幾個需要注意的地方,下面是一個示意的scroll-view組件代碼,上面的幾個屬性是必須的:

<scroll-view scroll-y style="height: 200px;" bindscroll="scroll" scroll-into-view="{{toView}}" >

scroll-into-view:這個綁定了一個屬性,它的值應該是頁面元素的id,設置它的值就可以跳轉(zhuǎn)到ID對應的元素那里了。

scroll-y:添加這個屬性標明是豎向滑動的,對應的scroll-x則表示橫向滑動,豎向滑動時scroll-view必須設置一個固定的height

bindscroll:監(jiān)聽滑動,傳給他一個事件,滑動時執(zhí)行該事件

文檔上給的屬性特別多,暫時只需要上述幾個就可實現(xiàn)我們想要的效果。實現(xiàn)原理也很簡單,內(nèi)容部分,每個英文簡寫的view設置一個id,然后在導航list那里點擊時,就把scroll-into-view的值設置成點擊的那個id即可實現(xiàn)跳轉(zhuǎn)。

再說一下scroll-view的高度問題,這個一定要做適配的固定高度,不然在不同屏幕大小的手機上的顯示效果有差異。

幾點優(yōu)化

到這里功能基本都實現(xiàn)了,但后面還發(fā)現(xiàn)一些問題:如果要隱藏scroll-view的滾動條,需要設置css樣式:::-webkit-scrollbar

::-webkit-scrollbar {
 width: 0;
 height: 0;
 color: transparent;
}

還有就是點了一個錨點實現(xiàn)了跳轉(zhuǎn),這個時候你滾動頁面再點之前點的錨點,頁面就不會再跳轉(zhuǎn)了,這個時候就需要監(jiān)聽滾動事件,滾動時將scroll-into-view屬性的值清空?;蛘咴诿看五^點跳轉(zhuǎn)后,再由一個異步操作將scroll-into-view屬性的值清空。

2017/12/05補充:

scroll-view默認是無滑動動畫的,需要滾動的動畫效果需要在組件上設置:scroll-with-animation='true'
關(guān)于固定高度height的設置問題,一開始我以為這個高度和滾動元素的數(shù)目/高度有關(guān),這個時候處理動態(tài)變化的列表就很麻煩。后面在網(wǎng)上看到的一個方法就是使用wx.getSystemInfo方法得到windowHeight,把這個設置為scroll-view的高度(單位為px)即可。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“小程序中如何使用scroll-view實現(xiàn)錨點滑動”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學習!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI