Почему scrollTop постоянно скролит в самый вверх страницы? JQuery

Использую такой код:

$('html, body').animate({scrollTop: $('#rakenduse').offset().top}, 2000);

Нужно проскролить к элементу $('#rakenduse'), но скролит постоянно вверх страницы.

Также:

console.log($('#rakenduse').offset());

выводит {top: 0, left: 0} , хотя элемент находится явно не вверху страницы:

Расположения элемента


Ответы (1 шт):

Автор решения: Vasily

Убедитесь что у Вас достаточно места снизу для того что бы скролл сработал корректно:

const handleClick = () => {
  $("html, body").animate({scrollTop: $("#test").offset().top}, 2000)
}

$("button").on("click", handleClick)
body {
  height: 2000px;
}

#test {
  display: table;
  color: white;
  background-color: red;
  padding: 20px;
  margin-top: 200px;
}

button:nth-of-type(2) {
  margin-top: 200px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button>Scroll to DIV</button>
<div id="test">Test DIV with margin-top: 200px;</div>
<button>Scroll to DIV</button>

В остальном Ваш код работает корректно, другая возможная причина это расчет позиции offset. Если использовать нативные методы, то реальный offset обычно приходиться считать самостоятельно, однако, поскольку Вы используете jQuery и его метод offset(), то проблем с расчетом из за вложенности быть не должно.

→ Ссылка