javascript - 如何确定滚动时是否传递了元素?
问题描述
我试图找出滚动时何时通过了某个元素。
const elementTarget = document.getElementById('sidebar');
window.addEventListener('scroll', () => {
if (window.scrollY > elementTarget.offscrollTop) {
console.log('passed an element');
}
})
示例代码:https ://codepen.io/RomanKomprs/pen/LMrPNJ
编辑: 上面的代码不起作用。当我向下滚动并且 scrollY 大于我的侧边栏元素的偏移量时,条件不会触发。我究竟做错了什么?
解决方案
替换offscrollTop
为getBoundingClientRect().top
const elementTarget = document.getElementById("sidebar");
window.addEventListener("scroll", () => {
if (window.scrollY > elementTarget.getBoundingClientRect().top) {
console.log("passed an element");
}
});
推荐阅读
- python - 多次运行和退出 PyQt 应用程序
- botframework - 用于捕获唯一用户 ID 的团队的 Microsoft bot 框架
- arrays - numpy中具有不同数据类型的二维数组
- linux - 我试图在脚本中按 Ctrl D 但我把它弄坏了?
- excel - VBA - 如果网络驱动器的字母映射未知,如何更改驱动器(ChDrive)
- ruby-on-rails - 如何在迁移中将列类型更改为字符串大写
- java - spring boot + gcloud + “502 Bad Gateway”
- python - 你能把两个不同长度的字典相乘来创建第三个字典吗?
- c++ - const 指针的模板参数推导失败
- linux - 在 32 位 Linux 上使用 tf.lite 模型进行推理