var lastScrollTop = 0; var delta = 5; var navbarHeight = $('.navbar').outerHeight(); var didScroll; $(window).scroll(function(event) { didScroll = true; }); setInterval(function() { if (didScroll) { hasScrolled(); didScroll = false; } }, 50); function hasScrolled() { var st = $(this).scrollTop(); if (Math.abs(lastScrollTop - st) <= delta) { return; } // If current position > last position AND scrolled past navbar... if (st > lastScrollTop && st >= navbarHeight) { // Scroll Down $('.navbar').removeClass('nav-top').removeClass('nav-down').addClass('nav-up'); } else if (st <= 5) { $('.navbar').addClass('nav-top').removeClass('nav-down').removeClass('nav-up'); } else { // Scroll Up // If did not scroll past the document (possible on mac)... if (st + $(window).height() < $(document).height()) { $('.navbar').removeClass('nav-top').removeClass('nav-up').addClass('nav-down'); } } lastScrollTop = st; }