(function($) { 'use strict'; $(function() { // The function actually applying the offset function offsetAnchor() { if (location.hash.length !== 0) { // window.scrollTo(window.scrollX, window.scrollY - 140); $("html").animate({ scrollTop: $(location.hash).offset().top - 160 }, 500); } } // Captures click events of all elements with href starting with # $(document).on('click', 'a[href^="#"]', function(event) { // Click events are captured before hashchanges. Timeout // causes offsetAnchor to be called after the page jump. window.setTimeout(function() { offsetAnchor(); }, 0); }); // Set the offset when entering page with hash present in the url window.setTimeout(offsetAnchor, 0); }); })(jQuery);