• Как остановить функцию в js при определенном условии?

    RAX7
    @RAX7
    function headerScroll() {
      let headerTop = null;
      let headerSubstrate = null;
      let lastScrollTop = 0;
    
      function onScroll() {
        let scrollDistance = window.scrollY;
    
        if (scrollDistance > lastScrollTop) {
          headerTop.classList.remove('header__top-active');
          headerSubstrate.style.top = '-200px';
        } else {
          headerTop.classList.add('header__top-active');
          headerSubstrate.style.top = '0px';
        }
    
        lastScrollTop = scrollDistance;
      }
    
      function init() {
        destroy();
        headerTop = document.querySelector('.header__top');
        headerSubstrate = document.querySelector('.header__substrate');
        lastScrollTop = 0;
        window.addEventListener('scroll', onScroll);
      }
    
      function destroy() {
        window.removeEventListener('scroll', onScroll);
      }
    
      return { init, destroy };
    }
    
    const { init: initStickyHeader, destroy: destroyStickyHeader } = headerScroll();
    
    const mediaQuery = window.matchMedia('(min-width: 768px)');
    
    mediaQuery.addEventListener('change', (event) => {
      if (event.matches) {
        initStickyHeader();
      } else {
        destroyStickyHeader();
      }
    });

    https://developer.mozilla.org/en-US/docs/Web/API/M...
    Ответ написан
    Комментировать