$(function () { var $fixed_header_spacer = null; if (location.hash) { if ($fixed_header_spacer === null) { $fixed_header_spacer = $('div.fixed-header-spacer'); if ($fixed_header_spacer.length == 0) $fixed_header_spacer = false; } var fixed_header_spacer_height = 0; if ($fixed_header_spacer) { fixed_header_spacer_height = $fixed_header_spacer.height(); } var hash = location.hash.substr(1); if (hash.charAt(0) === '#') return; var $item = $('#' + hash); if ($item.length > 0) { window.scrollTo(0, 0); $('html, body').animate({ scrollTop: $item.offset().top - fixed_header_spacer_height }, 1000); } } $("a[href*=#]").click(function(e) { if ($fixed_header_spacer === null) { $fixed_header_spacer = $('div.fixed-header-spacer'); if ($fixed_header_spacer.length == 0) $fixed_header_spacer = false; } var fixed_header_spacer_height = 0; if ($fixed_header_spacer) { fixed_header_spacer_height = $fixed_header_spacer.height(); } var href = $(this).attr('href').split('#'); var pathname = href[0]; var hash = href[1]; if (hash.charAt(0) === '#') return; var $item = $('#' + hash); if ($item.length > 0) { var current_page_pathname = window.location.pathname; if (pathname === current_page_pathname || pathname === '') { $('html, body').animate({ scrollTop: $item.offset().top - fixed_header_spacer_height }, 1000); if (history.pushState) { history.pushState(null, null, '#' + hash); } else { location.hash = '#' + hash; } e.preventDefault(); } } }); });