javascript - 使用 `scroll-behavior: smooth` 检测滚动何时完成

标签 javascript css

当滚动到页面上的元素已完成时,检测的最佳方法是什么?规范说“滚动框在用户代理定义的时间段内使用用户代理定义的计时函数以平滑的方式滚动。用户代理应遵循平台约定,如果有的话。”


(2017-11-23) 在相关说明中,Firefox 58 now has a chrome-only scrollend event.

最佳答案

唯一可行的选择似乎是等待,直到没有更多的 scroll 事件:

let timer;
window.addEventListener( 'scroll', () => {
    clearTimeout( timer );

    timer = setTimeout( () => {
        callback();
    }, 300 );
}, { passive: true } );

更新:Firefox 109 和 Chrome 110 现在有一个 scrollend 事件:https://caniuse.com/mdn-api_element_scrollend_event

关于javascript - 使用 `scroll-behavior: smooth` 检测滚动何时完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46827193/

相关文章:

javascript - AngularJs: $http 同步调用

javascript - Twig 日期过滤器不起作用( Angular 问题?)

html - 调整浏览器大小时阻止网页上的元素移动

javascript - 自定义选择框上的黑色阴影

javascript - jQuery 找到最接近的类来显示一个 div

html - 悬停时图像上显示的文字大于图像?

javascript - three.js:按名称或 ID 访问场景对象

javascript - Discord.js 如何检查用户是否不接受直接消息

css - 如何在cakephp中内联文本框和按钮

javascript - 使用 jQuery 捕获 Facebook 'Like' 按钮的点击