首页 > 解决方案 > 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)
});

有没有人知道这里发生了什么?这里的超时只是为了减少执行。

标签: javascripthtmlcssscroll

解决方案


推荐阅读