我不知道这个滚动效果是什么,所以不知道如何搜索我的答案,我无法在源代码中找到它。什么是负责Paragon滚动效果的代码,滚动将导致页面向下滚动到我假设的下一个div。或者在一定的高度。
答案 0 :(得分:2)
我把CodePen扔到了一起。它没有动画,但解释了一般的机制(Paragon网站做的不同,但开始以下可能更适合)。
核心部分是:
window.onwheel = function ( e ) {
e.preventDefault();
var wDelta = e.deltaY > 0 ? 'down' : 'up';
if (wDelta === "down") {
// scroll Down
} else {
// scroll Up
}
}
要知道在哪里滚动,我们当然需要知道我们在哪里。有几种方法可以做到这一点。我所做的是检查top
对viewport
的当前height
。
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
,space
等等,但也可以以类似的方式完成。 为确保向后兼容性,您需要扩展代码(例如绑定到onmousewheel
事件)。但这会给你一个开始的地方。
<强> PS 强>
还要考虑重新加载页面时的行为(如果用户在viewports
之间重新加载,它将保持在它们之间,直到另一个scroll
发生。)