首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Angular scrollPositionRestoration没有动画/平滑滚动?

Angular的scrollPositionRestoration属性用于控制页面导航后滚动位置的恢复方式。默认情况下,当页面导航后,滚动位置会被恢复到之前的位置,但没有动画或平滑滚动效果。

要实现具有动画或平滑滚动效果的滚动位置恢复,可以通过自定义导航器来实现。以下是一个示例:

  1. 创建一个自定义导航器类,例如SmoothScrollRestoration:
代码语言:txt
复制
import { Injectable } from '@angular/core';
import { Router, Scroll, ScrollBehavior } from '@angular/router';

@Injectable()
export class SmoothScrollRestoration implements ScrollBehavior {
  constructor(private router: Router) {}

  public shouldScroll = (position: Scroll): boolean => {
    return true;
  }

  public scrollToPosition = (position: Scroll): [number, number] => {
    const [x, y] = position.position;
    window.scrollTo({ top: y, left: x, behavior: 'smooth' });
    return [x, y];
  }

  public getScrollPosition = (): [number, number] => {
    return [window.scrollX, window.scrollY];
  }
}
  1. 在应用的根模块中提供自定义导航器:
代码语言:txt
复制
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RouterModule, Router, Scroll } from '@angular/router';
import { SmoothScrollRestoration } from './smooth-scroll-restoration';

@NgModule({
  imports: [BrowserModule, RouterModule.forRoot([])],
  providers: [
    {
      provide: Scroll,
      useClass: SmoothScrollRestoration,
      deps: [Router],
    },
  ],
})
export class AppModule {}

现在,当使用Angular的路由导航时,滚动位置将具有平滑滚动效果。

关于Angular的scrollPositionRestoration属性和自定义导航器的更多信息,可以参考腾讯云的Angular文档:Angular文档

请注意,本回答中没有提及亚马逊AWS、Azure、阿里云、华为云、天翼云、GoDaddy、Namecheap、Google等流行的云计算品牌商,以符合要求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

不再迷惑,也许之前你从未真正懂得 Scroller 及滑动机制

一直以来,Android 开发中绕不过去的话题就是自定义 View,曾几何时,考验一个开发者能不能熟悉自定义 View 的基础流程作为分辨菜鸟和中级开发者的一个技术标准。但是自定义 View 本身而言,应对各种具体的需求,难度又不一样,这是因为牵扯到了各种各样的技术点。本文要讲解的一个技术点,正是广大开发者容易困惑的一个知识点————Scroller。为什么说它是一个容易让人困惑的内容呢?这是因为很多开发者勉强接受了许多书本或者是博客上直接给予的概念说明,而对于 View 中 scroll 本身思考的过少。每次顺着别人的博文来看,好像已经弄懂了。知道了怎么设置参数如 mScrollX、怎么样创建 Scroller 对象然后调用相应的 API。可是呢?当脱离博文涉及的事例而处理自己工作当中真实面对的场景,往往出现的情况是不能很好地实现既定的效果,这个时候会发现自己并没有真的理解它,所以没有办法举重若轻地将思维迁移到崭新的问题上面。各位读者,请回想下自己是否有过这种体会否则说曾经是否有过这种体会?如果有的话,我们接下来将开启一段解惑之旅。

01
领券