0

当元素position: sticky到达他的偏移量(top: 0例如)并停在屏幕上时,我无法offsetTop正确获取他的内容,它显示的内容超出了必要的范围。同时,我无法得到getBoundingClientRect().top,因为它显示0。请看一下这个例子:

https://jsfiddle.net/Lxud76ma/

当元素具有粘性时,它会保留其在 DOM 中的位置,但计算是在其实际位置上进行的。

那么,当元素具有粘性时,如何获取元素的坐标呢?有任何想法吗?

4

2 回答 2

1

我想我找到了答案,但如果有人知道更正确的方法,请纠正我。

在计算之前需要将position元素从更改stickystatic。获取他的坐标并将他带回position: sticky

https://jsfiddle.net/Lk74do8u/

于 2019-10-26T19:44:09.813 回答
0

您只需要计算getBoundingClientRect粘性元素的内容/子元素。

    <div class="sticky" id="sticky">
      <div id="stickyContent">
        ...
      </div>
    </div>

我已经更新了你的例子: https ://jsfiddle.net/3962n0ov/

于 2021-09-14T08:37:10.413 回答