Javascript 通过向顶部添加固定的滚动值,可以使用windows.Scroll

Javascript 通过向顶部添加固定的滚动值,可以使用windows.Scroll,javascript,angularjs,angularjs-directive,scroll,Javascript,Angularjs,Angularjs Directive,Scroll,我在AngularJS指令中使用了这个函数。这个函数会滚动到页面顶部,但这不是我的目标:我想让它只向上滚动400px或30% function scrollToTop() { var scrollDuration = 500; var scrollStep = -window.scrollY / (scrollDuration / 15); console.log(scrollStep); var scrollInterval = setInterval(fun

我在AngularJS指令中使用了这个函数。这个函数会滚动到页面顶部,但这不是我的目标:我想让它只向上滚动400px或30%

function scrollToTop() {
    var scrollDuration = 500;
    var scrollStep = -window.scrollY / (scrollDuration / 15);
    console.log(scrollStep);

    var scrollInterval = setInterval(function () {
        if (window.scrollY != 0) {
           window.scrollBy(0, scrollStep);
        } else {
           clearInterval(scrollInterval);
        }
    }, 15);
}

我尝试将
scrollStep
变量更改为300或任何其他数字,但实际上我无法理解。

distanceToScroll
是任意数量的像素(即400),如果小于400,则是整个窗口滚动距离。为此,您可以使用
Math.min
<代码>滚动步骤根据
距离到滚动
计算。您需要在
setInterval
中记录“到目前为止我滚动了多少次”,我们称之为
distanceScrolled
。继续滚动,直到覆盖了
distance-to-croll

函数scrollToTop(){
var=500;
var stepDuration=15;
var distancetoscoll=Math.min(400,窗口滚动);
var scrollStep=距离滚动/(滚动持续时间/步长持续时间);
console.log(scrollStep);
var distanceScrolled=0;
var scrollInterval=setInterval(函数(){
如果(距离滚动<距离滚动){
scrollBy(0,-1*scrollStep);
距离滚动+=滚动步长
}否则{
清除间隔(滚动间隔);
}
}步进时间);
}
document.getElementById('btn')。addEventListener('click',scrollToTop)
#非常高{
高度:3000px;
}
#btn{
位置:固定;
右:10px;
顶部:10px;
}


滚动
“我想让它只滚动400px或30%”你能详细解释一下吗?@FreemanLambda-Hey。当我从页面底部的按钮启动此功能时,现在发生了什么。屏幕滚动到页面顶部,但我希望它只滚动400像素或任何其他数字不到顶部。哦,老兄,真的非常感谢你。你向我解释了我应该如何思考,并为我解决了这个问题。真的谢谢你,我真的很感激。