Javascript 如何更改滚动速度以使其平滑?
我偶然发现了这个网站,我喜欢它的滚动功能 我注意到卷轴非常平滑,没有跳跃,给人一种平静的感觉。它以同样的平滑滚动响应我的鼠标滚轮、箭头按钮和空格键。此外,大屏幕上的侧菜单有一个可爱的平滑滚动惯性曲线,可以锚定链接,我认为这是相关的 我试着深入研究代码,我很确定它不是CSS属性,在JS文件中的“滚动”和“视差”上执行control-F显示了结果,但是有太多的引用,我不确定是哪一个控制了这个功能,或者我如何在我自己的项目中复制它。我知道他在使用源文件中的Wordpress和Jquery。毫无疑问,这是一个插件,通过对StackOverflow的挖掘,我发现了“Jquery平滑滚动”()。然而,他们的演示站点()非常紧张,一点也不平稳。我还发现了这个演示()Javascript 如何更改滚动速度以使其平滑?,javascript,jquery,css,wordpress,animation,Javascript,Jquery,Css,Wordpress,Animation,我偶然发现了这个网站,我喜欢它的滚动功能 我注意到卷轴非常平滑,没有跳跃,给人一种平静的感觉。它以同样的平滑滚动响应我的鼠标滚轮、箭头按钮和空格键。此外,大屏幕上的侧菜单有一个可爱的平滑滚动惯性曲线,可以锚定链接,我认为这是相关的 我试着深入研究代码,我很确定它不是CSS属性,在JS文件中的“滚动”和“视差”上执行control-F显示了结果,但是有太多的引用,我不确定是哪一个控制了这个功能,或者我如何在我自己的项目中复制它。我知道他在使用源文件中的Wordpress和Jquery。毫无疑问,
if(window.addEventListener)window.addEventListener('DOMMouseScroll',wheel,false);
window.onmouseheel=document.onmouseheel=wheel;
功能控制盘(事件){
var-delta=0;
如果(event.wheelDelta)delta=event.wheelDelta/120;
else if(event.detail)delta=-event.detail/3;
手柄(三角形);
if(event.preventDefault)event.preventDefault();
event.returnValue=false;
}
函数句柄(增量){
var时间=1000;
var距离=300;
$('html,body').stop().animate({
scrollTop:$(窗口).scrollTop()-(距离*增量)
},时间);
}
#myDiv{
高度:2000px;
宽度:100px;
背景色:#CCF;
字体系列:“投石机MS”;
字体大小:12px;
线高:24px;
填充物:5px;
保证金:5px;
溢出:隐藏;
}
.boldit{font-weight:bold;}
使用鼠标滚轮(而不是滚动条)滚动此分区。您将看到滚动最终会减慢,然后停止。使用鼠标滚轮(而不是滚动条)滚动此分区。您将看到滚动最终会减慢,然后停止。使用鼠标滚轮(而不是滚动条)滚动此分区。您将看到滚动最终会减慢,然后停止。使用鼠标滚轮(而不是滚动条)滚动此分区。您将看到滚动最终会减慢,然后停止。使用鼠标滚轮(而不是滚动条)滚动此分区。您将看到滚动最终会减慢,然后停止。使用鼠标滚轮(而不是滚动条)滚动此分区。您将看到滚动最终会减慢,然后停止。使用鼠标滚轮(而不是滚动条)滚动此分区。您将看到滚动最终会减慢,然后停止。使用鼠标滚轮(而不是滚动条)滚动此分区。您将看到滚动最终会减慢,然后停止。使用鼠标滚轮(而不是滚动条)滚动此分区。您将看到滚动最终会减慢,然后停止。使用鼠标滚轮(而不是滚动条)滚动此分区。您将看到滚动最终会减慢,然后停止。使用鼠标滚轮(而不是滚动条)滚动此分区。您将看到滚动最终会减慢,然后停止。使用鼠标滚轮(而不是滚动条)滚动此分区。您将看到滚动最终会减慢,然后停止。使用鼠标滚轮(而不是滚动条)滚动此分区。您将看到滚动最终会减慢,然后停止。使用鼠标滚轮(而不是滚动条)滚动此分区。您将看到滚动最终会减慢,然后停止。使用鼠标滚轮(而不是滚动条)滚动此分区。您将看到滚动最终会减慢,然后停止。使用鼠标滚轮(而不是滚动条)滚动此分区。您将看到滚动最终会减慢,然后停止。
该站点似乎正在使用wordpress特定的库来实现其滚动行为。在chrome中,您可以通过在开发者工具中找到源代码并查看全局侦听器下的wheel事件来找到特定代码
网站正在监听的事件列表位于屏幕截图的右侧。打开滚轮显示滚轮的侦听器。单击源代码将打开相应的js文件。它已经缩小了,但chrome应该可以为你提供漂亮的打印效果。如果没有,屏幕右下角会有一个{}按钮,可以很好地打印出来。看起来该站点正在使用带有以下初始化参数的JavaScript库:
SmoothScroll({
frameRate: 150,
animationTime: 1000,
stepSize: 100,
pulseAlgorithm: 1,
pulseScale: 4,
pulseNormalize: 1,
accelerationDelta: 50,
accelerationMax: 3,
keyboardSupport: 1,
arrowScroll: 50,
fixedBackground: 0
});
此库与WordPress无关(除非此站点的某些WordPress插件使用此库),您可以在任何站点上使用它,而不管其后端引擎如何