微信小程序scroll-view實現滾動穿透和阻止?jié)L動的方法
scroll-view滾動穿透,阻止?jié)L動
頁面彈窗阻止?jié)L動是一種常見的問題,這里簡單介紹小程序scroll-view的一種解決方式
常用阻止?jié)L動方式
在不使用scroll-view的彈窗中, 為position為absolute或fixed的元素設置catchtouchmove空事件就可以阻止彈窗下的頁面因事件穿透滾動
<view catchtouchmove="doNothing"></view>
也可直接寫catchtouchmove,相當于綁定了事件名為true的事件
問題場景
在小程序中,在absolute或fixed的類彈窗布局中。要顯示列表、長文本段落等可滾動元素,必須使用scroll-view組件,無法阻止頁面本身的滾動
解決辦法
既然無法簡單的阻止事件穿透,就在頁面可滾動的元素本身想想辦法:
頁面滾動元素
小程序中的簡單布局,在頁面內容超出一屏時,滾動的元素是page
如何讓頁面不滾動
將page的高度設為100%,頁面最外層放一個view,打開彈窗時通過一個class增加樣式,設頁面高度100%,overflow: hidden來停止?jié)L動
打開彈窗時設isStopBodyScroll為true,關閉時設為false
<view class="{{isStopBodyScroll ? 'scroll-lock' : ''}}"> <!-- 頁面內容 --> </view>
.scroll-lock { height: 100%; overflow-y: hidden; }
存在的問題
這樣設置頁面會回到頂部,期待有更好的解決方式或官方對這個問題提供支持
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
zepto中使用swipe.js制作輪播圖附swipeUp,swipeDown不起效果問題
Swipe JS 是一個輕量級的移動滑動組件,支持 1:1 的觸摸移動,阻力以及防滑性能都不錯,可以讓移動web應用展現更多的內容,能解決我們對于移動Web對滑動的需求。下面小編給大家介紹zepto中使用swipe.js制作輪播圖附swipeUp,swipeDown不起效果問題,需要朋友可以參考下2015-08-08javascript setTimeout和setInterval計時的區(qū)別詳解
window對象有兩個主要的定時方法,分別是setTimeout 和 setInteval 他們的語法基本上相同,但是完成的功能取有區(qū)別。2013-06-06