阅读AngularJS docs我还不知道$anchorScroll是否可以使用持续时间/缓动选项来平滑滚动到元素。

它只说:

$location.hash('bottom');

// call $anchorScroll()
$anchorScroll();

我不使用jQuery,也不想这样做。还有一种聪明而简单的方法来制作或扩展$anchorScroll以使滚动更加流畅吗?

最佳答案

不幸的是,使用$anchorScroll是不可能的。如您所见,$anchorScroll没有任何选项,并且不能与$ngAnimate一起使用。为了使滚动动画,您需要使用自己的服务/工厂或直接使用JavaScript。

为了进行自学,我将示例与平滑的滚动服务结合在一起。可能有更好的方法来执行此操作,因此鼓励您提供任何反馈。

要滚动到某个元素,请将ng-click="gotoElement(ID)"附加到任何元素。我认为更好的方法是将该指令作为指令。

这是working example on jsFiddle

更新

现在有许多第三方指令可以完成此任务。

  • https://github.com/oblador/angular-scroll
  • https://github.com/d-oliveros/ngSmoothScroll
  • https://github.com/arnaudbreton/angular-smoothscroll
  • https://gist.github.com/justinmc/d72f38339e0c654437a2
  • 10-06 04:19