有没有jQuery scrollTop的替代品?

d-_*_*_-b 6 javascript scroll

是否有任何替代方法可用于将浏览器滚动到页面顶部的功能?现在我正在使用:$('html, body').animate({scrollTop: '0px'}, 300);.

是否有其他东西,或者不是jQuery的东西

jmo*_*253 4

下面是scrollTop 函数的纯JavaScript 实现。它使用 setInterval 作为异步 while 循环,定期递减 pageYOffset 值,该值表示相对于页面顶部的滚动条位置。

需要澄清的是,while 循环会阻止页面上的其他脚本运行,并使滚动到顶部显得即时,无论步长值如何。而具有 50 毫秒迭代的 setInterval 只会每 50 毫秒阻塞一次页面,并且会在每次单独迭代后更新滚动条 UI。

该函数采用单个参数“step”,它确定滚动条移动到屏幕顶部的速率。步长越小,滚动条移动到顶部的速度就越慢。

function scrollTop(step) {
    var start = window.pageYOffset;
    var count = 0;
    var intervalRef = setInterval( (function(interval, curOffset) {
        return function() {
            curOffset -= (interval * step);
            console.info("offset = " + curOffset);
            window.scrollTo(0, curOffset);
            console.info("pageYoffset = " + window.pageYOffset);
            count++;
            if(count > 150 || curOffset < 0) clearInterval(intervalRef);
        }
    })(step, start--), 50);
}

// scroll to the top from the middle of the page in about 5 seconds.
scrollTop(5);

// scroll to the top in about 1 second
scrollTop(15);

// scrolls to the top very fast!
scrollTop(35);
Run Code Online (Sandbox Code Playgroud)

当偏移量达到 0 时,间隔停止,这意味着滚动条已到达页面顶部。

但是,计数检查器会将操作限制为仅 150 次迭代,以防止您在决定修改浏览器时锁定浏览器。否则,您可以删除该条件。