Вход

Просмотр полной версии : Получение координат элемента с position: sticky


mi.rafaylik
26.10.2019, 22:11
Когда элемент с position: sticky достигает указанной позиции (например top: 0) и прилипает к окну, то не получается правильно получить его изначальные статичные координаты (относительно окна и относительно родителя).

Значение getBoundingClientRect().top становится равно нулю.
Значение offsetTop увеличивается по мере прокрутки.

Демонстрация проблемы:
https://jsfiddle.net/Lxud76ma/

Всё это логично, ведь элемент фактически плывет внутри своего родителя. И несмотря на то, что место под его статичное положение остаётся зарезервированным (остальные элементы не сдвигаются, как если бы элемент имел position: fixed), но расчеты координат идут по его фактическом местонахождению.

Как в данном случае получить координаты того места, которое зарезервировано для элемента в его статичном положении, но тогда пока он приклеен к экрану? Есть идеи?

Malleys
26.10.2019, 22:24
координаты элемента Т. е. не координаты элемента, а координаты того места, где находился бы элемент без position: sticky?

mi.rafaylik
26.10.2019, 22:29
Т. е. не координаты элемента, а координаты того места, где находился бы элемент без position: sticky?
Верно, спасибо за правильную формулировку, поправил вопрос.

Malleys
26.10.2019, 22:30
Вы можете указать элементу перед измерениями position: static;, измерить и вернуть после исходное значение position
https://jsfiddle.net/Lk74do8u/

mi.rafaylik
26.10.2019, 22:36
Вы можете указать элементу перед измерениями position: static;, измерить и вернуть после исходное значение position
https://jsfiddle.net/Lk74do8u/
Кстати были такие мысли, но думал что элемент будет дергаться визуально, но вроде как всё в порядке. Вообще функция нужна для пересчета при ресайзе окна.
Спасибо большое!