Skip to content

Instantly share code, notes, and snippets.

@vansosnin
Last active August 29, 2015 14:23
Show Gist options
  • Save vansosnin/6d0a9f62ae4f6d06f9f6 to your computer and use it in GitHub Desktop.
Save vansosnin/6d0a9f62ae4f6d06f9f6 to your computer and use it in GitHub Desktop.
Animated scroll plus hash in url
function filterPath(string) {
return string
.replace(/^\//,'')
.replace(/(index|default).[a-zA-Z]{3,4}$/,'')
.replace(/\/$/,'');
}
var locationPath = filterPath(location.pathname);
var scrollElem = scrollableElement('html', 'body');
$('a[href*=#]').each(function() {
// Ensure it's a same-page link
var thisPath = filterPath(this.pathname) || locationPath;
if ( locationPath == thisPath
&& (location.hostname == this.hostname || !this.hostname)
&& this.hash.replace(/#/,'') ) {
// Ensure target exists
var $target = $(this.hash), target = this.hash;
if (target) {
// Find location of target
var targetOffset = $target.offset().top;
$(this).click(function(event) {
// Prevent jump-down
event.preventDefault();
// Animate to target
$(scrollElem).animate({scrollTop: targetOffset}, 400, function() {
// Set hash in URL after animation successful
location.hash = target;
});
});
}
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment