当元素position: sticky到达他的偏移量(top: 0例如)并停在屏幕上时,我无法offsetTop正确获取他的内容,它显示的内容超出了必要的范围。同时,我无法得到getBoundingClientRect().top,因为它显示0。请看一下这个例子:
https://jsfiddle.net/Lxud76ma/
当元素具有粘性时,它会保留其在 DOM 中的位置,但计算是在其实际位置上进行的。
那么,当元素具有粘性时,如何获取元素的坐标呢?有任何想法吗?
当元素position: sticky到达他的偏移量(top: 0例如)并停在屏幕上时,我无法offsetTop正确获取他的内容,它显示的内容超出了必要的范围。同时,我无法得到getBoundingClientRect().top,因为它显示0。请看一下这个例子:
https://jsfiddle.net/Lxud76ma/
当元素具有粘性时,它会保留其在 DOM 中的位置,但计算是在其实际位置上进行的。
那么,当元素具有粘性时,如何获取元素的坐标呢?有任何想法吗?
我想我找到了答案,但如果有人知道更正确的方法,请纠正我。
在计算之前需要将position元素从更改sticky为static。获取他的坐标并将他带回position: sticky。
您只需要计算getBoundingClientRect粘性元素的内容/子元素。
<div class="sticky" id="sticky">
<div id="stickyContent">
...
</div>
</div>
我已经更新了你的例子: https ://jsfiddle.net/3962n0ov/