@Miguel's answer already has an example of how to do, so I'll just show the site code which was mentioned in the question.
How about "stealing" their source?
They use jQuery and anchors to do such functionality, as can be seen in the code below:
(function ($) {
//Add current view's highlighting to the navigation
/** helper for highlighting */
function highlightNav(navLinks,id)
{
navLinks.filter('[href="/#'+id+'"]').addClass("active");
}
$(window).scroll(function() {
//console.log("They see me scrollin, they hatin");
//clear highlighting
var navLinks = $('.site-navigation a');
navLinks.removeClass("active");
//calc current viewport
var viewTop = $(window).scrollTop();
var viewBottom = viewTop + $(window).height();
//for all h1 and h2 elements, check if they are visible
//performance tweak: stop each() after the first element is found to be behind view
var previous = "";
var foundOne = false;
var fallback = "";
$('h1, h2').each(function(i,e) {
//get element position;
var eTop = $(e).offset().top;
var eBottom = eTop + $(e).height();
var id=e.id;
id = id.replace("_title", "");
if (eTop >= viewTop) {
//if we are passed the view and no heading was highlighted yet, store previous one as fallback
if (! foundOne) {
fallback=previous;
}
if (eBottom <= viewBottom) {
highlightNav(navLinks, id);
foundOne = true;
} else {
return false; //break the each(), the rest is below
}
}
previous=id;
});
//no h1/h2 is in the viewport, so highlight the last one above
if (! foundOne) {
highlightNav(navLinks, fallback);
}
});
})(jQuery);
This code fetches the anchor that is in scroll
and adds the active
class to the menu item.
If you'd like to study more, this code can be found at passed by .
It's worth noting that I did not find the code source to post the copyright, so I posted what was found on the site quoted in the question and in Google searches.