Плагин jquery.waypoints позволяет выполнять js-код когда html-блок достигнет нужного положения на странице.

Пример кода для плагина jquery.waypoints:

jQuery(document).ready(function(jQuery) {
	var nav_container = jQuery(".nav-container");
	var nav = jQuery('nav');
	var top_spacing = 0;
	var waypoint_offset = 50;
	jQuery('nav').waypoint(               
		{
			handler: function(direction) {
				
				/*  
				nav.toggleClass('sticky', direction=='down');
				*/
				if (direction == 'down'){
					nav_container.css({ 'height':nav.outerHeight() });
					nav.addClass("sticky")
						.stop()
						.css("top", -nav.outerHeight())
						.animate({"top" : top_spacing});
				}
				else{
					nav_container.css({ 'height':'auto' });
					nav.removeClass("sticky")
						.stop()
						.css("top", nav.outerHeight() + waypoint_offset)
						.animate({"top" : ""});

						//alert(direction);
				}
			}
			, offset: function() {return -(nav.outerHeight() + waypoint_offset);}

		}

	);

});

CSS:

.sticky {
	position: fixed;
	top: 0;
	right:0;
	left:0;
}

HTML:

<div class="nav-container">
	<nav class="navbar navbar-default navbar-static-top">
	</nav>
</div>

При прокрутке страницы вниз, блок навигации уходит вверх за пределы окна, а затем плавно возвращается к верхней части окна.