我正在根据您滚动的数量来绘制进度条。我应该使用这两个中的哪一个?

function getScrollValue() {
    return ((parseInt(document.body.getBoundingClientRect().top) * -1));
}


要么

function getScrollValue() {
    return window.pageYOffset;
}

最佳答案

除了window.pageYOffset是更专业的API以及用于检测滚动值的更高性能的解决方案之外,例如,如果主体具有一些可抵消的边距顶部,则使用getBoundingClientRect().top尝试相同的操作可能会产生意外结果。它的位置。

编辑

我包含了以下jsPerf Test,它显示了两种选择之间的性能差异,以及第三种(较旧的)API对它们的不利影响。

07-25 21:57