滚动事件的麻烦

时间:2018-04-30 10:59:36

标签: javascript events frontend

我想制作一个脚本,使div header的标识符header更细,滚动时更粗,当您返回页面顶部时更粗。但是我遇到了一个问题:当我向下滚动时,header会变得更薄,但是当我回到页面顶部时,它不会变得更厚,而且如果你重新加载网页就在某个地方在中间,然后你到顶部,var head = document.getElementById('header'); var height = 100; var sourceCoord = head.getBoundingClientRect().top + window.pageYOffset; var id; document.addEventListener("scroll", function() { if (window.pageYOffset > sourceCoord) { id = setInterval(function() { if (height == 50) clearInterval(id); else { height--; head.style.height = height + "px"; } }, 10); head.style.position = 'fixed'; } else if (window.pageYOffset <= sourceCoord) { id = setInterval(function() { if (height == 100) clearInterval(id); else { height++; head.style.height = height + "px"; } }, 10); head.style.position = "absolute"; } });只变厚一次。

我做错了什么?

&#13;
&#13;
<div id="header"></div>
&#13;
  protected function validator(array $data)
  {
    return Validator::make($data, [
        'verify_by' => 'required',     
    ]);
  }
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

问题在于您在页面加载时计算sourceCoord,而在滚动时它实际上会发生变化。将它包含在滚动侦听器中,你应该很好。