Как измерить расстояние элемента от его абсолютного расположения на странице до верха окна?
Хочу внедрить в проект больше моушена и динамики, но для каждого анимированного элемента писать отдельный scroll() со статичными расстояниями - тупо и долго, к тому же при изменении порядка блоков анимации запутаются и всё накроется медным тазом.
Я решил, что надо сделать одну функцию, а расстояние от блока до топа экрана рассчитывать через скрипт.
Беру элемент: $('.advantages__shield'), к примеру. командую scrollTop() и вывожу результат в консоль. В результате мне в консоль выводится разница в расстоянии от верха окна до верха страницы, которые никак не имеют отношения к элементу. В те же ворота зашли и offset().top , и position().top.
Не найдя решения, решил спросить у вас, ребят, есть ли варианты? Приму любые костыли. Спасибо.
как ни странно, если я пишу нижеoffsetFromScreenTop условие "if(offsetFromScreenTop < 500)", всё нормально. Но суть в том что мне нужно "if(offsetFromScreenTop > 500)", а при этом условии offsetFromScreenTop равен всегда нулю. Где 500 - это высота экрана.
Никита Кит: справа промотайте вниз, увидите как меняется oofsetFromScreenTop i.imgur.com/8hsKxkI.png
Он станет равен нулю после Вашего условия, только если Вы как-то меняете его значение неосознанно :)
Сделайте Update на моём фидле с Вашим кодом, чтобы понять, что у Вас там не так.
Sn0wSky: странно, но при моём условии в твоём фиддле всё работает стабильно. Видимо всё дело в том что блок, на который я вешаю анимацию в абсолюте и центрирован относительно родителя. Я повесил расчёт от этого родителя и всё чудомагией заработало ништяк. Thanks, solution is yours.
да, это всё понятно. Но парадокс в том, что у меня $('elem').position().top равен $('elem').offset().top равен $(window).scrollTop() лол как бы я ни скроллил.
GreatRash: может. Баг сидел в том, что элемент, от которого я отсчитывал был в absolute и центрирован относительно родителя. Когда я начал отсчитывать от родителя, то всё заработало как надо.