如何在 Angular 中自动滚动?

Posted

技术标签:

【中文标题】如何在 Angular 中自动滚动?【英文标题】:How do I auto scroll in Angular? 【发布时间】:2019-06-15 21:34:54 【问题描述】:

我有一个动态组件,我在其中水平添加材质卡。几张卡片后,组件被填满,我可以滚动组件。但是如何让它自动水平滚动,这样我就不用一直用鼠标了?

我已经尝试过使用一些 css 属性,例如溢出等。

.blocksWrapper 
  display: flex;
  overflow: auto;
  min-height: 305px;

我希望它会水平自动滚动。

它应该是这样的:

但它从不自动滚动。

【问题讨论】:

您能否澄清一下-您的意思是您不必用鼠标单击滚动条,还是想让代码自动滚动?如果是鼠标问题,shift + 滚轮是水平的,或者大多数触控板都支持多点触控手势。 没有。我的意思是:组件总是停留在同一个位置,即使我添加了更多卡片。我想要的:它应该始终自动滚动到右侧,以便显示最新的卡片。但是当然也应该可以用鼠标滚动。我希望你明白我的意思。 我从这个答案***.com/questions/43945548/… 中查看了这个stackblitz stackblitz.com/edit/…,你可以在添加卡片时总是调用scrollIntoView 之后没有大小元素吗? 【参考方案1】:

当大小改变时,没有自动滚动 div 的自动功能。 我想您使用某个按钮动态添加卡片?然后您可以在添加卡片时以编程方式滚动!

这里有多个建议的解决方案:

你可以使用jquery的方法“scrollLeft()”。只需将水平滚动设置为 99999 之类的值,以确保它尽可能地移动。 更改您的 html 元素的默认 scrollTo() 行为(请参阅此 thread)。 使用 css 指令direction: rtl 将默认滚动条位置设置为右侧(参见此thread)

这是使用解决方案 2) 的示例:https://angular-dfjmej.stackblitz.io

也许这不是您想要的确切渲染,但这只是设置问题。

【讨论】:

如何在 TypeScript 中使用 scrollLeft()?可以举个例子吗? 我使用 stackblitz 链接编辑了我的答案,您可以在其中找到解决方案。

以上是关于如何在 Angular 中自动滚动?的主要内容,如果未能解决你的问题,请参考以下文章

自动滚动:如何在滚动视图中自动滚动图像

Angular 9 在每次更改时滚动到顶部

自动调整 textarea 最大 5 行限制,然后显示滚动条

Angular 10 - 如何在集合更改时自动加载新项目

工具提示隐藏在溢出滚动/自动容器上

如何在 ios 中使用自动布局更改滚动视图内容大小