获取HTML元素相对于容器

时间:2017-08-25 21:15:00

标签: javascript html

现在我有一个网页:

  1. 不同大小顶部的固定标题,覆盖了网页的主要内容。
  2. 带有深层嵌套滚动容器的页面。
  3. 在该容器内,其他几个深层嵌套的元素。
  4. 我想要做的是滚动该容器,使其中一个元素与容器的 visible 部分的顶部对齐。 我相信我要找的是相对于容器可见部分顶部的嵌套元素的顶部。

    不幸的是我无法使用.offsetTop,因为它只引用了一个元素的直接父级,并且由于页面的结构,这些元素的嵌套太深,无法使用。它总是一个固定的数字。与滚动容器相同;它的直接父母不是窗口。令人沮丧的是,标题不是固定的高度,所以我不能很容易地将它硬编码到我的计算中。我也不能使用jQuery。

    我尝试将getBoundingClientRect用于元素和容器,但它们总是彼此相距固定的距离,并且它不会向我提供有关元素滚动距离所需的信息不幸的是,相对于容器的可见区域。

    编辑:我们已经有了一个滚动解决方案,但我们希望通过某些提议的方法来改进它,我正在尝试确定其可行性。我想问一下,大家请尽量以粗体回答问题,而不是提出替代解决方案。我真的非常感谢任何提供的帮助,但我希望根据极其具体的情况获得一些非常具体的信息。

1 个答案:

答案 0 :(得分:0)

我之前也遇到过这种问题,您可以尝试将其自动滚动到元素

var elem = <some select operation that returns the element>;
elem.id = <some temp id> //if no id is there
var a  = document.createElement('a');
a.href = "#" + elem.id;
a.click();

如果您愿意,可以在元素完成后删除元素。