@rinatoptimus

Почему не работает скролл до элемента на JavaScript?

Нажимая на кнопку, должен произойти скролл до определенного элемента на странице. Нашел такое:
function ScrollTo(name) {
		  ScrollToResolver(document.getElementById(name));
		}

		function ScrollToResolver(elem) {
		  var jump = parseInt(elem.getBoundingClientRect().top * .2);
		  document.body.scrollTop += jump;
		  document.documentElement.scrollTop += jump;
		  if (!elem.lastjump || elem.lastjump > Math.abs(jump)) {
		    elem.lastjump = Math.abs(jump);
		    setTimeout(function() {
		      ScrollToResolver(elem);
		    }, "100");
		  } else {
		    elem.lastjump = null;
		  }
		}


<button type="submit" onclick="ScrollTo('page-title-not-auth')"></button>


Работает не совсем корректно: Cannot read property 'getBoundingClientRect' of null

Пробовал scrollIntoView, но надо, чтоб элемент, до которго надо доскроллить, оказывался у самого верха страницы.
  • Вопрос задан
  • 652 просмотра
Пригласить эксперта
Ответы на вопрос 1
rework
@rework
Помог ответ? В благодарность отметь его решением
elem.getBoundingClientRect().top * .2

А зачем тут умножение на 0.2 ?

А вообще тут можно вообще обойтись без скрипта, просто используйте ссылки с якорями - (htmlbook.ru/samhtml/yakorya)

А если вам нужен плавный скролл, то можно на Jquery так сделать:

$('button[type="submit"]').click(function() {
    $('html, body').animate({
        scrollTop: $("#page-title-not-auth").offset().top
    }, 1000);
});
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы