此函数应从页面顶部向下滚动到下方 215 像素,并增加延迟,以便第一个 window.scrollTo 事件在 10 毫秒发生,下一个在 20 毫秒发生,依此类推。
最后一行应该延迟 2150 毫秒,因此总共需要大约 2 秒。
相反,它会立即向下滚动 215 个像素。
function scrollDown() {
var yFinal=216, delay=0;
for (y=0; y<yFinal; y++) {
delay = delay+10
setTimeout(function() {
window.scrollTo(100,y);
},delay);
}
}
悲伤的脸。为什么?
[编辑:感谢您的帮助!我用它来编写这个更复杂的最终解决方案,我在这里提供它供任何人敲竹杠。一开始滚动很快,然后慢慢滚动。正是我想要的。通过使用 setInterval 的 setTimeout 代替,它可以让您更好地控制速度曲线,因此您可以轻松地使其呈指数级减速]
function showCategory(categoryId)
{
var yInitial=document.body.scrollTop,
yFinal=216,
delay=0;
if (yInitial<yFinal)
{
yInitial=(yFinal-yInitial)/1.3+yInitial;
window.scrollTo(100, yInitial);
for (var yCurrent = yInitial; yCurrent < yFinal; yCurrent+=2)
{
delay += 30;
(function(position)
{
setTimeout(function()
{
window.scrollTo(100, position);
}, delay);
})(yCurrent);
}
}
}