5 つのブロックがあり、誰もがビューポート サイズ、幅 100%、高さ 100% を持っているこの Web サイトを取得しました。したがって、ページが読み込まれると、最初のページだけが表示されます。他のものはその下にあります。次に下にスクロールすると、最後のページがあるページの最後に到達するまで、2 番目のページ、3 番目のページ、というように表示されます。デフォルトの直線的な方法ではなく、ブロックごとにページを強制的にスクロールする方法があるかどうかを考えていました。ユーザーが下にスクロールしたときに、2 つのブロックの間の道を見るのではなく、2 番目のブロックを直接 (直接ではなく、可能であればアニメーションで) 見てもらいたいと思います。これらのブロックは別のページのようなもので、どこもクリックせずに (それが私にとって最も簡単な (そして atm で唯一の) 動作させる方法であるため)、スクロールするだけでページごとに移動したいと考えています。それは可能ですか?ありがとう!
編集:
scrollTo プラグインを使用してみましたが、どちらもわかりませんでした。簡単にするために、ユーザーが下にスクロールするときを考慮に入れましょう。これは私がしたことです:
var tempScrollTop, currentScrollTop = 0; // 2 vars to check if user scrolls down
var isScrolling = false;
var nextPage = 2 // I'm on 1st page, I want to show page 2 when user scrolls down;
$(window).scroll(function(){
currentScrollTop = $(window).scrollTop(); // current position
if (tempScrollTop < currentScrollTop && ! isScrolling ){ // if user scrolls down
isScrolling = true; // animation in progress, shouldn't get into this 'if' till finished
$(window).scrollTo('section#page-' + nextPage, 1000, {
onAfter: function(){ isScrolling = false; nextPage++; }
});
}
tempScrollTop = currentScrollTop; // update the current position
});
「if」ステートメントは、ユーザーが下にスクロールしたかどうかを確認します。技術的にはうまくいくはずですが、私が欲しいページを見せた後、彼は次のページに移動し、最後までスクロールし続けます! 少しテストを行ったところ、すべての単一のアニメーション (つまり、単一のページ全体のスクロール) の後に実行する必要があるコードがランダムに実行されることがわかりました。つまり、 isScrolling = false は発生しませんが、 nextPage++ は発生しますが、それがスクロールを続ける理由です (実際には次のページに移動するため)。アニメーションが進行中ではなく、アニメーションが完了した後にこれを行うべきではありませんか? よくわかりません..