javascript - 平滑滚动然后聚焦于 Angular2 应用程序

标签 javascript angular angular5

我正在使用 Angular2+ 创建一个应用程序,我希望平滑滚动到输入然后将焦点设置到该输入。我正在做这样的事情:

 scroll(id){
    document.getElementById(id).scrollIntoView({block: "start", behavior: "smooth"});
    document.getElementById(id).focus();
  }

平滑滚动部分工作正常,直到我添加焦点代码。我认为发生的情况是,当我设置焦点时,它会覆盖滚动效果。如何在设置焦点之前让滚动完成?

以下代码演示了我的意思:https://stackblitz.com/edit/angular-t4ousw

最佳答案

更新:显然此解决方案不适用于所有浏览器

也许有些东西阻止您使用此解决方案,但您可以通过简单地颠倒方法调用的顺序来实现此目的。首先聚焦,然后执行滚动到 View 中。

scroll(id){
  document.getElementById(id).focus();
  document.getElementById(id).scrollIntoView({block: "start", behavior: "smooth"});
}

对于最终用户来说,我想无论如何,组合效果是相同的。

关于javascript - 平滑滚动然后聚焦于 Angular2 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48695586/

相关文章:

angular - 如何将加载的数据正确绑定(bind)到@ng-select,angular5

angular - TS2304 : Cannot find name

javascript - AJAX代码澄清

javascript - 如何清除/禁用次要和警告控制台日志错误?

angular - 在 Angular 4 中使用 POST 时获得 200 状态但仍然出现错误

javascript - angularjs FormGroup有效为真但返回假

javascript - Angular 5 - 动态行添加清除表中的选择

javascript - JavaScript WebSockets API 的机制

javascript - 使用 <select> 标签的视频选择不起作用

ASP.NET Core 2.0 Razor 与 Angular/React/等