Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Получение координат элемента с position: sticky (https://javascript.ru/forum/events/78731-poluchenie-koordinat-ehlementa-s-position-sticky.html)

mi.rafaylik 26.10.2019 22:11

Получение координат элемента с position: sticky
 
Когда элемент с position: sticky достигает указанной позиции (например top: 0) и прилипает к окну, то не получается правильно получить его изначальные статичные координаты (относительно окна и относительно родителя).
  • Значение getBoundingClientRect().top становится равно нулю.
  • Значение offsetTop увеличивается по мере прокрутки.
Демонстрация проблемы:
https://jsfiddle.net/Lxud76ma/

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

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

Malleys 26.10.2019 22:24

Цитата:

Сообщение от mi.rafaylik
координаты элемента

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

mi.rafaylik 26.10.2019 22:29

Цитата:

Сообщение от Malleys (Сообщение 514630)
Т. е. не координаты элемента, а координаты того места, где находился бы элемент без position: sticky?

Верно, спасибо за правильную формулировку, поправил вопрос.

Malleys 26.10.2019 22:30

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

mi.rafaylik 26.10.2019 22:36

Цитата:

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

Кстати были такие мысли, но думал что элемент будет дергаться визуально, но вроде как всё в порядке. Вообще функция нужна для пересчета при ресайзе окна.
Спасибо большое!


Часовой пояс GMT +3, время: 07:57.