繁体   English   中英

有没有办法计算平滑滚动结束需要多长时间

[英]Is there a way to calculate how long it will take for a smooth scroll to end

我希望我的 animation 在 Javascript 中的屏幕停止滚动后运行,否则用户将无法看到它。 不幸的是,chrome中滚动的速度可以变化很大,我不知道如何计算速度。

一旦检测到页面位于正确的滚动位置,为什么不直接启动 animation 而不是计算滚动持续时间? 您可以使用window.scrollY获取页面的当前垂直滚动,使用element.offsetTop获取元素的顶部 position。

您可以制作一个 function 来检查该元素是否在页面上可见,类似于以下代码。

function elementInScrolledView(element) {
    const pageTop = window.scrollY;
    const pageBottom = pageTop + window.innerHeight;

    const elementTop = element.offsetTop;
    const elementBottom = elementTop + element.offsetHeight;

    return ((elementBottom <= pageBottom) && (elementTop >= pageTop));
}

如果元素高于 window,则此代码可能需要进行一些编辑; 你可以只比较元素的顶部吗?

一旦滚动开始,您可以开始检查每一帧的间隔,直到 function 返回 true,此时您可以清除间隔并启动 animation。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM