javascript - if else 语句在页面滚动事件中都一个接一个地执行
问题描述
我有以下代码,一旦滚动条通过元素的 y 坐标,它应该做一些事情。
然而,一旦我滚动到那个给我负 y 值的元素下方,它开始在任何后续向下滚动时在 if 和 else 之间表现出奇怪的变化。如果我超过了元素,事情就会恢复正常。
let timeout = null;
window.addEventListener('scroll', () => {
clearTimeout(timeout);
timeout = setTimeout(() => {
if (element.getBoundingClientRect().y <= 0) {
element.style.position = 'fixed';
} else {
element.style.position = 'relative';
}
}, 50)
});
有没有人知道这里发生了什么?这里的超时只是为了减少执行。
解决方案
推荐阅读
- reactjs - 为什么 useEffect 改变的 state 值没有回来?
- azure - Azure 数据工厂用户对特定管道或链接服务的权限
- javascript - 2 个具有相同值但一个具有更多对象的数组/对象 - 如何简化代码而不重复?
- google-cloud-platform - 使用 Google Cloud 进行 Terraform:google_cloud_instance 找不到 google_compute_disk
- spring-boot - Spring Boot 通过外部属性禁用 @JmsListener
- c# - 使用异步/等待时的互斥应用程序异常
- javascript - Rails 中的 React:在 Reflux Store 中更新 Props 不会导致组件更新
- node.js - npm 错误!无效的包名称“__init__.py”:名称不能以下划线开头
- python - 有什么方法可以增加我的哈希的冲突次数以进行音频处理吗?
- c# - chttp2_server.cc:298:断言失败:*port_num == port_temp 在同一台机器上运行服务器和客户端时(仅在 Citrix 上)