Проблема с событием прокрутки - PullRequest
0 голосов
/ 30 апреля 2018

Я хотел сделать скрипт, который делает 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";
  }
});
<div id="header"></div>

1 Ответ

0 голосов
/ 30 апреля 2018

Проблема в том, что вы вычисляете sourceCoord при загрузке страницы, в то время как оно фактически изменяется при прокрутке. Включите его в прослушиватель прокрутки, и все будет хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...