2017-11-18 8 views
0

私のサイドドロワーメニューが開いているときにモバイルユーザー向けの素晴らしいUXを作成するには、overflow: hiddenheight: 100vhをAppコンテナー(ドロワーを除くすべて)に設定します引き出しが開いている間はスクロールできません。手動でスクロールするまでChrome上でプログラムスクロールを行うことはできません

通常、overflowheightのプロパティを削除すると、ウィンドウが画面の先頭に戻ってきます。それを回避するために、元のスクロール位置(引き出しの前)を保存しておき、引き出しが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はスクロール位置の内部知識を更新しませんか?

+0

プランナーを作成できますか?私は[シナリオ](https://plnkr.co/edit/ke5FScRpxjLHwI2MzNwW?p=preview)を再作成して成功していない –

答えて

0

window.scrollBy(0, scrollPosition)が終了しましたが、window.scrollTo()またはdocument.body.scrollTopと同じ問題は発生していないようです。

関連する問題