2019/11/22 追記
一部のスクロールを禁止にするのではなく一部のスクロールのみ許可して他は全て禁止にするという逆転の発想の方が
使い勝手が良かったので紹介します
このライブラリを使うと色々な問題が解決されていい感じでした
https://github.com/willmcpo/body-scroll-lock
Vueならこっちですね
https://github.com/phegman/v-scroll-lock
1
| npm install v-scroll-lock
|
でインストールして、
1 2
| import VScrollLock from 'v-scroll-lock' Vue.use(VScrollLock)
|
すると全画面でスクロールが無効になります
で、スクロールさせたい要素だけ
1
| <div v-scroll-lock="true">
|
のようにするとこの要素だけはスクロールできるようになります
以下、原文
普通スクロール禁止といえば以下を使うのだと思いますが、
1
| document.addEventListener('touchmove', function(e) {e.preventDefault();}, {passive: false});
|
これだと画面全体に効いてしまいます
画面の一部の要素だけをスクロール禁止にするCSSを見つけたのでメモしておきます
https://caniuse.com/#feat=css-touch-action
caniuseを見るとデスクトップSafari以外は問題なく使えるので導入しても大丈夫ですね!()