Note. I did not check your code for accuracy and did not check whether my changes would work. I just took the code that you had and changed the βtopβ to βleftβ and basically hoped for the best :)
After some reformatting your code:
$(document).ready(function() { function filterPath(string) { return string.replace(/^\//,'') .replace(/(index|default).[a-zA-Z]{3,4}$/,'') .replace(/\/$/,''); } $('a[href*=#]').each(function() { if ( (filterPath(location.pathname) == filterPath(this.pathname)) && (location.hostname == this.hostname) && (this.hash.replace(/#/,'')) ) { var $targetId = $(this.hash), $targetAnchor = $('[name=' + this.hash.slice(1) +']'); var $target = $targetId.length ? $targetId : $targetAnchor.length ? $targetAnchor : false; if ($target) { var divOffset = $target.parent().offset().top; var pOffset = $target.offset().top; var pScroll = pOffset - divOffset; $(this).click(function() { $target.parent().animate({scrollTop: pScroll + 'px'}, 600); return false; }); } } }); });
I think yes, in fact, you could reuse this code so that divs move left and right by changing lines:
var divOffset = $target.parent().offset().top; var pOffset = $target.offset().top; $target.parent().animate({scrollTop: pScroll + 'px'}, 600);
Sort of:
var divOffset = $target.parent().offset().left; var pOffset = $target.offset().left; $target.parent().animate({scrollLeft: pScroll + 'px'}, 600);
I cross my fingers on this;)
source share