我得到了这个网站,其中有 5 个块,每个人都有视口大小、100% 宽度和 100% 高度。因此,当页面加载时,您只能看到第一个。其他的在它下面。然后,当您向下滚动时,您会看到第二个,然后是第三个,依此类推,直到到达最后一个所在的页面末尾。我在想是否有一种方法可以强制逐块滚动页面而不是默认的线性方式。我希望用户在向下滚动时直接(嗯,不是直接,而是通过动画,如果可能的话)看到第二个块,而不是看到两个块之间的路径。这些块就像不同的页面,无需单击任何位置(因为这将是我使其工作的最简单(也是唯一的)方式),我想逐页移动它们,只需滚动。那可能吗?谢谢!
编辑:
我尝试使用 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++ 会发生,这就是它不断滚动的原因(实际上是因为它会转到下一页)。它不应该在动画完成后执行此操作,而不是在执行过程中执行此操作吗?我很困惑..