好吧,我不知道我在做什么。我以为会有一个图书馆,但显然没有。
问题说明
我有一个复杂的 React 应用程序。
那里存在
- 主页元素
- 内容容器
- 一个展示容器
- 我要滚动到的元素
我正在尝试找到一种解决方案,该解决方案将滚动到页面上的元素并强制所有父滚动条滚动到适当的位置,以便在屏幕上查看元素。
例子
<html>
<head />
<body>
<div style="background:red; display: block; height: 1000px; overflow-y: auto">
Root Parent
<div>
<div style="background:green; display: block; height: 1000px;overflow-y: auto">
Another Parent
<div>
<div style="background:blue; display: block; height: 1000px; overflow-y: auto"></div>
<div style="background:purple; display: block; height: 1000px; overflow-y: auto">
<div id="targetElement">Scroll here</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
JS 小提琴在这里
https://jsfiddle.net/10f83ush/
我尝试过的解决方案
我发现zen scroll
但在How to Use Section - 1.4
他们明确声明不支持
https://zengabor.github.io/zenscroll/#howtouse
我在这里找到了这个线程 滚动所有嵌套的滚动条以将 HTML 元素显示在视图中
我认为这会起作用,但事实并非如此。
如果我这样做element.scrollIntoView
也不起作用,因为它有两组都需要滚动到的可滚动父/祖父。
要求
我怎么才能让我想要滚动的目标的所有父母都滚动到正确的位置以在页面上显示元素?
我觉得我快疯了。现在是 2020 年,我不能简单地滚动到嵌套在其他可滚动元素中的元素?!
编辑
澄清一下,我不想一次做一百万个滚动条(是的,这是糟糕的 UI/UX),但我正在寻找的解决方案应该支持尽可能多的。我找到了多种解决方案,其中答案已经解决,但仅适用于一两个滚动条,然后忽略了两个以上。在尝试将嵌套元素滚动到视图中时,我希望获得有关如何处理任意数量的父滚动条的指导或帮助。