2016-08-02 58 views
1

功能我有以下的代碼添加/刪除基於滾動事件,除了在屏幕上< 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

你可以只添加在您設定的A級進線要在$(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