반응

2016-08-02 3 views
1

하는 기능을 재설정 I가 추가/스크린 < 768px반응

스크립트

function hasScrolled() { 
    if($(window).width() > 768) { 
    var st = $(this).scrollTop(); 
    if (Math.abs(lastScrollTop - st) <= delta) 
    return; 

    if (st > lastScrollTop && st > navbarHeight) { 

    // Scroll Down 
    $('#s-nav').removeClass('nav-down').addClass('nav-up'); 

    } else { 

    // Scroll Up 
    if (st + $(window).height() < $(document).height()) { 
    $('#s-nav').removeClass('nav-up').addClass('nav-down'); 
    } 
} 
lastScrollTop = st; 
} 
} 

HTML

제외 스크롤 이벤트를 기반으로 .nav 업 및 .nav 다운을 제거 다음 코드
<nav id="s-nav" class="nav-down"> .... </div> 

CSS

#s-nav { position: fixed; } 

#s-nav.nav-up { top: -75px; } 

@media screen and (max-width: 768px) { 

    #s-nav.nav-up { top: 0; } 
} 

그러나 모바일에서 화면 크기로 (반응 형) 화면 크기를 조정하면 창이 스크롤 된 것처럼 메뉴가 '올라갑니다'. 나는 화면 크기 때 나는

답변

1

당신은 당신이 원하는 당신이 클래스를 설정하는 행을 추가 할 수 있습니다 '을'유지되도록하는 기능을 '리셋'할 때 $(window).width() <= 768 :하지 작동

function hasScrolled() { 
    if($(window).width() > 768) { 
     var st = $(this).scrollTop(); 
     if (Math.abs(lastScrollTop - st) <= delta) 
      return; 

     if (st > lastScrollTop && st > navbarHeight) { 

      // Scroll Down 
      $('#s-nav').removeClass('nav-down').addClass('nav-up'); 

     } else { 

      // Scroll Up 
      if (st + $(window).height() < $(document).height()) { 
       $('#s-nav').removeClass('nav-up').addClass('nav-down'); 
      } 
     } 
    }else{ 
     $('#s-nav').removeClass('nav-up').addClass('nav-down'); 
    } 
    lastScrollTop = st; 
} 
+0

확실히 어떻게, 그러나 문제 해결! 감사합니다 – user3550879

+0

윈도우가 768보다 작 으면 # s-nav가 'nav-down'클래스를 사용하므로 크기를 조정할 때 여전히이 클래스가 있으므로 올라 가지 않습니다! 확실한 지 확실하지 않은 경우도 있습니다.) – shwarp

관련 문제