当元素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/