【问题标题】:scrollIntoView smooth scrolling goes way more down as it should in Angular 9scrollIntoView 平滑滚动在 Angular 9 中应该向下移动
【发布时间】:2020-10-17 03:47:05
【问题描述】:

从 Angular 8 升级到 Angular 9 后,我遇到了一个问题,即平滑滚动导致滚动更向下,因此元素甚至不在视图中,而是向上更多。这只发生在我路线改变,如果路线保持不变 - 平滑滚动是好的。

实施: 我创建了一个滚动指令:

@Directive({
  selector: '[scrollToSelected]'
})
export class ScrollToSelectedDirective implements AfterViewInit {
  @Input('scrollToSelected') scrollToClass: string;

  constructor(private el: ElementRef, private renderer: Renderer2) {
  }

  ngAfterViewInit() {
    if (this.el.nativeElement.classList.contains(this.scrollToClass)) {
      this.el.nativeElement.scrollIntoView({ block: 'center', behavior: 'smooth' });
    }
  }

在模板上我有条件地附加选定的类:

<div class="order-job-operation-component"
     *ngIf="operation$ | async as operation"
     [scrollToSelected]="'selected'"
     [class.selected]="operation.isSelected">

一旦我删除了流畅的行为 - 它再次运行良好。

“依赖”:{ "@angular/animations": "9.0.2", "@angular/cdk": "9.0.1", "@angular/common": "9.0.2", "@angular/compiler": "9.0.2", "@angular/core": "9.0.2", "@angular/flex-layout": "9.0.0-beta.29", "@angular/forms": "9.0.2", "@angular/localize": "9.0.2", "@angular/material": "9.0.1", "@angular/platform-b​​rowser": "9.0.2", "@angular/platform-b​​rowser-dynamic": "9.0.2", "@angular/router": "9.0.2",

“开发依赖”:{ "@angular-devkit/build-angular": "^0.901.9", "@angular/cli": "9.0.3", "@angular/compiler-cli": "9.0.2",

【问题讨论】:

    标签: javascript angular autoscroll


    【解决方案1】:

    试试这个.scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'nearest' });

    【讨论】:

    • 虽然此代码可以解决 OP 的问题,但最好包含关于您的代码如何解决 OP 问题的说明。这样,未来的访问者可以从您的帖子中学习,并将其应用到他们自己的代码中。 SO 不是编码服务,而是知识资源。此外,高质量、完整的答案更有可能获得支持。这些功能,以及所有帖子都是独立的要求,是 SO 作为一个平台的一些优势,使其与论坛区分开来。您可以编辑以添加其他信息和/或使用源文档补充您的解释。
    猜你喜欢
    • 2017-08-20
    • 1970-01-01
    • 2016-02-07
    • 2017-02-14
    • 2020-09-05
    • 1970-01-01
    • 1970-01-01
    • 2019-05-13
    • 1970-01-01
    相关资源
    最近更新 更多