Reading the AngularJS docs I haven't figured out if $anchorScroll
can have a duration/easing option to smooth scroll to elements.
It only says:
$location.hash('bottom');
// call $anchorScroll()
$anchorScroll();
I do not use jquery and don't want to; is there still a clever yet simple way to make or extend $anchorScroll
in order to make scrolling more smooth?
Unfortunately this is not possible using
$anchorScroll
. As you discovered$anchorScroll
doesn't have any options and doesn't work with$ngAnimate
. In order to animate the scroll you would need to use your own service/factory or just straight javascript.For the sake of self-learning I put together an example with a smooth scrolling service. There are probably better ways to do this so any feedback is encouraged.
To scroll to an element you attach a
ng-click="gotoElement(ID)"
to any element. I think an even better route would be to make this a directive.Here's the working example on jsFiddle.
Update
There are now a number of third-party directives for accomplishing this.