web頁面(小程序)列表滑動事件穿透解決方案(可能是(shì)全網最簡潔的(de)解決方案) ... - 新聞資訊 - 雲南小程序開發|雲南軟件開發|雲南網站建設-昆明融晨信息技術有限公司

159-8711-8523

雲南網建設/小程序開發/軟件開發

知識

不(bù)管是(shì)網站,軟件還是(shì)小程序,都要(yào / yāo)直接或間接能爲(wéi / wèi)您産生價值,我們在(zài)追求其視覺表現的(de)同時(shí),更側重于(yú)功能的(de)便捷,營銷的(de)便利,運營的(de)高效,讓網站成爲(wéi / wèi)營銷工具,讓軟件能切實提升企業内部管理水平和(hé / huò)效率。優秀的(de)程序爲(wéi / wèi)後期升級提供便捷的(de)支持!

您當前位置>首頁 » 新聞資訊 » 小程序相關 >

web頁面(小程序)列表滑動事件穿透解決方案(可能是(shì)全網最簡潔的(de)解決方案) ...

發表時(shí)間:2021-1-11

發布人(rén):融晨科技

浏覽次數:59

緣由

昨天測試給我的(de)小程序提了(le/liǎo)一個(gè)bug,說(shuō):‘我怎麽滑動彈出(chū)後的(de)這(zhè)個(gè)列表後面的(de)列表也(yě)會跟着滑動啊,這(zhè)很奇快诶’,我:‘我修複一下’。

造成問題的(de)場景

是(shì)一個(gè) 數據列表頁 ,通過 觸底上(shàng)滑 加載數據

所以(yǐ)我把 頁面最外層 的(de) view 加了(le/liǎo)一個(gè) min-height: '100vh' 讓這(zhè)個(gè)列表 可以(yǐ)自動增加高度進行擴容

這(zhè)個(gè)列表頁有 很多篩選條件或者說(shuō)是(shì)篩選項 ,我做了(le/liǎo)一個(gè) 有背景遮罩層的(de)彈出(chū)組件 ,把這(zhè)些 篩選項塞進去 ,最外層的(de) view 給了(le/liǎo)一個(gè) max-height: 85vh; overflow: scroll; 讓它也(yě)可以(yǐ)在(zài)數據很多的(de)時(shí)候 滑動去選擇 某一個(gè)篩選項

注意問題就(jiù)來(lái)了(le/liǎo):如果彈出(chū)的(de)篩選組件和(hé / huò)數據列表的(de)數據都多到(dào)超出(chū)了(le/liǎo)上(shàng)述的(de) 85vh 100vh 這(zhè)時(shí)候如果滑動彈出(chū)的(de)篩選列表 touchmove 事件就(jiù)會在(zài)兩個(gè)列表上(shàng)同時(shí)觸發,表現爲(wéi / wèi) 當上(shàng)層列表觸底或者觸頂時(shí),如果底層列表爲(wéi / wèi)觸底或者未觸頂 ,就(jiù)會觸發底層的(de) touchmove 事件,就(jiù)會滑動背景,也(yě)就(jiù)是(shì)老生常談的(de) 滑動穿透 ,既然找出(chū)問題發生的(de)原因了(le/liǎo),現在(zài)我們就(jiù)開始解決吧:hammer:

百度大(dà)法好不(bù)好?

小程序端

有人(rén)說(shuō)給底層列表增加一個(gè) catchtouchmove='true' ,但這(zhè)種情況下直接頁面都不(bù)能滑動了(le/liǎo),我又看到(dào)很多說(shuō)給底層的(de)列表放到(dào) scroll-view 裏面然後設置 scroll-y='true' ,通過scoll-view的(de)事件去加載數據,但是(shì) scroll-view 性能在(zài)列表數據特别多的(de)時(shí)候會有折扣,這(zhè)個(gè)先不(bù)談,據本人(rén)嘗試,這(zhè)種方式并不(bù)奏效,可能我的(de)姿勢不(bù)對,有哪位仁兄有解決過的(de)可以(yǐ)來(lái)探讨一下,歡迎留言~~

web端

推薦直接使用 tua-body-scroll-lock ,可以(yǐ)比較完美的(de)解決這(zhè)個(gè)問題。

祭出(chū)我的(de)大(dà)殺器

其實我們改變一下思路問題就(jiù)迎刃而(ér)解了(le/liǎo) 首先明确我們的(de)需求: 最上(shàng)層的(de)列表滑動的(de)時(shí)候下面的(de)列表不(bù)能滑動 簡單啊: 我們是(shì)可以(yǐ)在(zài)底層的(de)頁面上(shàng)監聽到(dào)上(shàng)層的(de)列表有沒有顯示的(de):當上(shàng)層列表展示的(de)時(shí)候,給到(dào)底層的(de) view 一個(gè) overflow: hidden;hight: 100vh 的(de)樣式,當上(shàng)層隐藏的(de)時(shí)候取消這(zhè)個(gè)樣式

親測完美解決 ★,° :.☆( ̄▽ ̄)/$: .°★ 。測試小姐姐都說(shuō)好( ﹁ ﹁ ) ~→

相關案例查看更多