私のサイドドロワーメニューが開いているときにモバイルユーザー向けの素晴らしいUXを作成するには、overflow: hidden
とheight: 100vh
をAppコンテナー(ドロワーを除くすべて)に設定します引き出しが開いている間はスクロールできません。手動でスクロールするまでChrome上でプログラムスクロールを行うことはできません
通常、overflow
とheight
のプロパティを削除すると、ウィンドウが画面の先頭に戻ってきます。それを回避するために、元のスクロール位置(引き出しの前)を保存しておき、引き出しがwindow.scrollTo(0, pos)
で終了すると元の位置に戻します。
私が気づいたことは、手動でをスクロールするまで、Chromeがプログラムでをスクロールできないことです。
if (!drawerIsOpen && drawerIsClosing) {
let done = false;
const interval = setInterval(() => {
if (window.scrollY !== this.props.store.app.scrollPosition) {
console.log('attempting');
window.scrollTo(0, this.props.store.app.scrollPosition);
} else {
clearInterval(interval);
}
}, 50);
}
その間隔が永遠に実行されますが、手動でウィンドウをスクロール二つ目は、Chromeはプログラム的にスクロールすることができるようになりますと間隔が中止されます:私は実行することで、これをテストしてみました。私はSafariとFirefoxでこれをテストしましたが、この動作は表示されません。
これは、どの要素にフォーカスがあるかと関係していますか?ユーザーが何らかの方法でページとやり取りするまで、Chromeはスクロール位置の内部知識を更新しませんか?
プランナーを作成できますか?私は[シナリオ](https://plnkr.co/edit/ke5FScRpxjLHwI2MzNwW?p=preview)を再作成して成功していない –