Javascript 如何实现类似Paragon站点的滚动效果

Javascript 如何实现类似Paragon站点的滚动效果,javascript,jquery,css,Javascript,Jquery,Css,我不知道这种滚动效果叫什么,所以我不知道如何搜索我的答案,在源代码中也找不到。在滚动会导致页面向下滚动到我假设的下一个div的地方,负责滚动效果的代码是什么。或者下降到某个高度。我把一个。它没有动画,但解释了一般的机制(Paragon网站做的不同,但开始以下可能更适合) 核心部分是: window.onwheel = function ( e ) { e.preventDefault(); var wDelta = e.deltaY > 0 ? 'down' : 'up';

我不知道这种滚动效果叫什么,所以我不知道如何搜索我的答案,在源代码中也找不到。在滚动会导致页面向下滚动到我假设的下一个div的地方,负责滚动效果的代码是什么。或者下降到某个高度。

我把一个。它没有动画,但解释了一般的机制(Paragon网站做的不同,但开始以下可能更适合)

核心部分是:

window.onwheel = function ( e ) {
    e.preventDefault();
    var wDelta = e.deltaY > 0 ? 'down' : 'up';
    if (wDelta === "down") {
        // scroll Down
    } else {
        // scroll Up
    }
}
要知道滚动到哪里,我们当然需要知道我们在哪里。有几种方法可以做到这一点。我所做的是对照
高度检查
视口的当前
顶部

var offset = window.pageYOffset,
    viewportHeight = document.documentElement.clientHeight;

switch (parseInt(offset/viewportHeight,0)) {
    case 0:
        // we are in the first viewport
        break;
    case 1:
        // we are in the second viewport
        break;
    ...
}
我刚刚检查了它的功能。就性能而言,它是可以改进的。您还应该绑定
keydown
(以捕获
pageUp
pageDown
空格
等等),但也可以以类似的方式进行绑定为确保向后兼容性您需要扩展代码(例如绑定到
onmouseheel
事件)。但这会给你一个起点

PS

还考虑在重新加载页面时需要的行为(如果用户在<代码>视口< /代码>之间重新加载,它将保持在它们之间,直到另一个<代码>滚动发生)。< /P>


要求我们推荐一种技术或查找书籍、工具、软件库、教程或其他非现场资源的问题与堆栈溢出无关。我不知道还能问什么。第一个问题是,不要重复问题标题“如何做X”您要求我们指出在第三方网站上负责的代码。第二个问题是,如果你问对了,它将是重复的:正如我提到的,我确实为此搜索了半个多小时,但不知道搜索什么才能得到答案