Почему 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(), то проблем с расчетом из за вложенности быть не должно.
