Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.11.2019, 15:15
Новичок на форуме
Отправить личное сообщение для ofrus Посмотреть профиль Найти все сообщения от ofrus
 
Регистрация: 09.11.2019
Сообщений: 3

Неправильно считает offsetTop до элемента
Здравствуйте, столкнулся с такой проблемой:
Задача: Есть плавающий элемент, который нужно зафиксировать при достижении нижней части сайта(в моем случае блока с id "sp-section-6").
Мое решение: Данный код отлично работал:
var stopmove = document.getElementById("sp-section-6").offsetTop;
		$(window).scroll(function() {
			 if ($(window).scrollTop() > stopmove - 200) {
				box.stop().animate({marginTop: topPadding+stopmove - 200}); 
			 }
			else 
				if ($(window).scrollTop() > offset.top) {
				box.stop().animate({marginTop: $(window).scrollTop() - offset.top + topPadding + 150});
			}
			else {
				box.stop().animate({marginTop: topPadding});
			}
		});

Код работал, пока у меня в статьях не было асинхронной загрузки скриптов, которые добавляют контент в статью и увеличивают ее высоту, соответственно, offsetTop вычисляется до загрузки этих скриптов, показывает неправильную высоту статьи, и плавающий элемент фиксируется где-то в середине статьи.
Вопрос: как решить эту проблему?
Ответить с цитированием
  #2 (permalink)  
Старый 09.11.2019, 15:19
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

ofrus,
добавить
load = () => stopmove = document.getElementById("sp-section-6").offsetTop;
Ответить с цитированием
  #3 (permalink)  
Старый 09.11.2019, 15:56
Новичок на форуме
Отправить личное сообщение для ofrus Посмотреть профиль Найти все сообщения от ofrus
 
Регистрация: 09.11.2019
Сообщений: 3

Сообщение от рони Посмотреть сообщение
ofrus,
добавить
load = () => stopmove = document.getElementById("sp-section-6").offsetTop;
Спасибо за ответ. Вставил ваш код уже куда только мог, но результат не меняется, отступ все равно считает по старому, куда конкретно его нужно вставить?
Ответить с цитированием
  #4 (permalink)  
Старый 09.11.2019, 16:06
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

ofrus,
а перенести строку 1 в строку 2?
Ответить с цитированием
  #5 (permalink)  
Старый 09.11.2019, 16:14
Новичок на форуме
Отправить личное сообщение для ofrus Посмотреть профиль Найти все сообщения от ofrus
 
Регистрация: 09.11.2019
Сообщений: 3

$(window).scroll(function() {
			var stopmove = document.getElementById("sp-section-6").offsetTop;
			load = () => stopmove = document.getElementById("sp-section-6").offsetTop;
			 if ($(window).scrollTop() > stopmove - 200) {
				box.stop().animate({marginTop: topPadding+stopmove - 200}); 
			 }
			else if ($(window).scrollTop() > offset.top) {
				box.stop().animate({marginTop: $(window).scrollTop() - offset.top + topPadding + 150});
			}
			else {
				box.stop().animate({marginTop: topPadding});
			}
		}

Если вы имеете ввиду вот так, то всё равно не работает
Ответить с цитированием
  #6 (permalink)  
Старый 09.11.2019, 16:53
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от ofrus
Если вы имеете ввиду вот так,
да но без строки 3.
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
функция неправильно считает элементы FaNaT_96 jQuery 3 27.03.2016 20:38
Изменить класс родительского элемента STyLe Общие вопросы Javascript 1 29.05.2014 20:21
Замена DOM элемента другим элементом MaxXxaM Events/DOM/Window 5 04.05.2013 01:24
Калькулятор Неправильно считает Jereme Общие вопросы Javascript 1 04.02.2013 14:17
.height() почему-то считает высоту элемента неправильно adelante jQuery 11 01.08.2012 15:38