【微信小程序】scroll-view,滾動穿透,阻止滾動

scroll-view滾動穿透,阻止滾動

頁面彈窗阻止滾動是一種常見的問題,這裏簡單介紹小程序scroll-view的一種解決方式css

經常使用阻止滾動方式

在不使用scroll-view的彈窗中, 爲position爲absolute或fixed的元素設置catchtouchmove空事件就能夠阻止彈窗下的頁面因事件穿透滾動html

<view catchtouchmove="doNothing"></view>

也可直接寫catchtouchmove,至關於綁定了事件名爲true的事件小程序

問題場景

在小程序中,在absolute或fixed的類彈窗佈局中。要顯示列表、長文本段落等可滾動元素,必須使用scroll-view組件,沒法阻止頁面自己的滾動佈局

解決辦法

既然沒法簡單的阻止事件穿透,就在頁面可滾動的元素自己想一想辦法:code

頁面滾動元素

小程序中的簡單佈局,在頁面內容超出一屏時,滾動的元素是pagehtm

如何讓頁面不滾動

將page的高度設爲100%,頁面最外層放一個view,打開彈窗時經過一個class增長樣式,設頁面高度100%,overflow: hidden來中止滾動
打開彈窗時設isStopBodyScroll爲true,關閉時設爲false事件

<view class="{{isStopBodyScroll ? 'scroll-lock' : ''}}">
  <!-- 頁面內容 -->
</view>
.scroll-lock {
  height: 100%;
  overflow-y: hidden;
}

存在的問題

這樣設置頁面會回到頂部,期待有更好的解決方式或官方對這個問題提供支持it

喜歡的話請關注,點贊,收藏~謝謝閱讀!io

相關文章
相關標籤/搜索