【问题标题】:Angular 11: Change scroll-behavior only for scrollPositionRestorationAngular 11:仅针对 scrollPositionRestoration 更改滚动行为
【发布时间】:2021-09-30 02:26:13
【问题描述】:

当您转到新路线时,我正在尝试将角度滚动到页面顶部。 app-routing 中的 scrollPositionRestoration: 'top' 完成此任务。但是,这个滚动是根据我的主 css 文件中的scroll-behavior: smooth; 进行动画处理的。

这个scroll-behavior 对我在应用程序中使用ViewportScroller 很重要。但是,严格来说,在加载新页面的情况下,我认为动画滚动会让人迷失方向并且没有必要。

有没有什么方法可以在加载新路由时禁用此行为,同时在我的应用程序的其他地方维护它?

【问题讨论】:

    标签: javascript angular angular11


    【解决方案1】:

    我找到了一个丑陋的解决方案,但它有效。

    只需将 routerOptions 的属性 scrollPositionRestoration 设置为顶部:const routerOptions: ExtraOptions = { scrollPositionRestoration: 'top' };

    然后在你要去的组件上,将document.querySelector('html')!.style.scrollBehavior = 'auto';添加到构造函数体中,将document.querySelector('html')!.style.scrollBehavior = 'smooth';添加到ngOnInit()方法体中。

    现在,当您从另一个组件转到该组件时,您的滚动条应该立即位于页面顶部(没有平滑效果)。如果您使用了片段,那么您将转到具有平滑效果的关联锚点。

    【讨论】:

      猜你喜欢
      • 2022-09-28
      • 2020-08-29
      • 2022-11-12
      • 1970-01-01
      • 2021-01-29
      • 1970-01-01
      • 2017-01-14
      • 1970-01-01
      • 2018-02-17
      相关资源
      最近更新 更多