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

因?yàn)樵谖⑿判〕绦虻沫h(huán)境中不能想在瀏覽器里設(shè)置標(biāo)簽,或者操作dom滾動,傳統(tǒng)做法就行不通了,一切都得按小程序的文檔來。
一開始我們的做法是使用boundingClientRect()方法獲取每個錨點(diǎn)的坐標(biāo),然后再用wx.pageScrollTo()方法滑動過去。結(jié)果發(fā)現(xiàn)效果不是很好,因?yàn)閎oundingClientRect方法返回的每個點(diǎn)的坐標(biāo)會隨著屏幕滑動而變化,可能還會引起頁面抖動,最后還是選擇scroll-view(可滾動視圖區(qū)域)組件來實(shí)現(xiàn)錨點(diǎn)效果。
具體實(shí)現(xiàn)
具體API就不贅述了,可以去看官方文檔,這里講幾個需要注意的地方,下面是一個示意的scroll-view組件代碼,上面的幾個屬性是必須的:
<scroll-view scroll-y style="height: 200px;" bindscroll="scroll" scroll-into-view="{{toView}}" >
scroll-into-view:這個綁定了一個屬性,它的值應(yīng)該是頁面元素的id,設(shè)置它的值就可以跳轉(zhuǎn)到ID對應(yīng)的元素那里了。
scroll-y:添加這個屬性標(biāo)明是豎向滑動的,對應(yīng)的scroll-x則表示橫向滑動,豎向滑動時scroll-view必須設(shè)置一個固定的height
bindscroll:監(jiān)聽滑動,傳給他一個事件,滑動時執(zhí)行該事件
文檔上給的屬性特別多,暫時只需要上述幾個就可實(shí)現(xiàn)我們想要的效果。實(shí)現(xiàn)原理也很簡單,內(nèi)容部分,每個英文簡寫的view設(shè)置一個id,然后在導(dǎo)航list那里點(diǎn)擊時,就把scroll-into-view的值設(shè)置成點(diǎn)擊的那個id即可實(shí)現(xiàn)跳轉(zhuǎn)。
再說一下scroll-view的高度問題,這個一定要做適配的固定高度,不然在不同屏幕大小的手機(jī)上的顯示效果有差異。
幾點(diǎn)優(yōu)化
到這里功能基本都實(shí)現(xiàn)了,但后面還發(fā)現(xiàn)一些問題:如果要隱藏scroll-view的滾動條,需要設(shè)置css樣式:::-webkit-scrollbar
::-webkit-scrollbar {
width: 0;
height: 0;
color: transparent;
}
還有就是點(diǎn)了一個錨點(diǎn)實(shí)現(xiàn)了跳轉(zhuǎn),這個時候你滾動頁面再點(diǎn)之前點(diǎn)的錨點(diǎn),頁面就不會再跳轉(zhuǎn)了,這個時候就需要監(jiān)聽滾動事件,滾動時將scroll-into-view屬性的值清空?;蛘咴诿看五^點(diǎn)跳轉(zhuǎn)后,再由一個異步操作將scroll-into-view屬性的值清空。
2017/12/05補(bǔ)充:
scroll-view默認(rèn)是無滑動動畫的,需要滾動的動畫效果需要在組件上設(shè)置:scroll-with-animation='true'
關(guān)于固定高度height的設(shè)置問題,一開始我以為這個高度和滾動元素的數(shù)目/高度有關(guān),這個時候處理動態(tài)變化的列表就很麻煩。后面在網(wǎng)上看到的一個方法就是使用wx.getSystemInfo方法得到windowHeight,把這個設(shè)置為scroll-view的高度(單位為px)即可。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 微信小程序?qū)崿F(xiàn)錨點(diǎn)定位功能的方法實(shí)例
- 微信小程序?qū)崿F(xiàn)錨點(diǎn)跳轉(zhuǎn)
- 微信小程序scroll-view實(shí)現(xiàn)滾動到錨點(diǎn)左側(cè)導(dǎo)航欄點(diǎn)餐功能(點(diǎn)擊種類,滾動到錨點(diǎn))
- 微信小程序 scroll-view 實(shí)現(xiàn)錨點(diǎn)跳轉(zhuǎn)功能
- 微信小程序scroll-view錨點(diǎn)鏈接滾動跳轉(zhuǎn)功能
- 微信小程序?qū)崿F(xiàn)錨點(diǎn)功能
- 小程序?qū)崿F(xiàn)錨點(diǎn)滑動效果
- 微信小程序?qū)崿F(xiàn)錨點(diǎn)定位樓層跳躍的實(shí)例
- 微信小程序商城分類滾動列表錨點(diǎn)的項(xiàng)目實(shí)踐
相關(guān)文章
手動實(shí)現(xiàn)js短信驗(yàn)證碼輸入框
本文記錄一下自己手動實(shí)現(xiàn)的一個前端常見的短信驗(yàn)證碼輸入組件,從需求到實(shí)現(xiàn)逐步優(yōu)化的過程。具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-06-06
一定有你會用到的JavaScript一行代碼實(shí)用技巧總結(jié)
這篇文章主要為大家介紹了一定有你會用到的JavaScript一行代碼總結(jié),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07
Javascript前端UI框架Kit使用指南之Kitjs簡介
本文給大家簡單介紹了一款優(yōu)秀的Javascript前端UI框架--Kitjs,支持PC端以及手機(jī)開發(fā)領(lǐng)域,非常的全面,這里推薦給有需要的小伙伴。2014-11-11
學(xué)習(xí)使用bootstrap的modal和carousel
這篇文章主要教大家學(xué)會用bootstrap的modal和carousel,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-12-12
JavaScript實(shí)現(xiàn)一個帶AI的井字棋游戲源碼
這篇文章主要介紹了基于JavaScript實(shí)現(xiàn)一個帶AI的井字棋游戲源碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-05-05

