Задать вопрос
@gpyshenko

Как заставить код скролла заработать во всех браузерах?

Не могу понять код работает в хроме, а в фаерфоксе нифига, пожалуйста помогите, а то время поджимает. Очень спасете.
// Кнопка которая прокручивает до блока
scrollToFollowBtn.addEventListener("click",
function () {
	scrollTo(document.body, followBlock.getBoundingClientRect().top, 600);
},false);
// Вот логика скролла
function scrollTo(element, to, duration) {
	if (duration <= 0) return;
	let difference = to - element.scrollTop;
	let perTick = difference / duration * 10;

	setTimeout(function() {
		element.scrollTop = element.scrollTop + perTick;
		if (element.scrollTop == to) return;
		scrollTo(element, to, duration - 10);
	}, 10);
}
  • Вопрос задан
  • 224 просмотра
Подписаться 1 Оценить 2 комментария
Решения вопроса 1
@Ridz
проблема в том что в одних браузерах document.body в других document.documentElement
scroll к элементу на js
scrollToFollowBtn.addEventListener("click", function() {
    scrollToElement(followBlock, 600)
}, false);

function scrollToElement(element, duration) {
    var to = element.getBoundingClientRect().top;
    var from = window.pageYOffset;
    var start = performance.now();
    requestAnimationFrame(function animate(time) {
        var progress = (time - start) / duration;
        1 <= progress && (progress = 1);
        window.scrollTo(0, from + (to - from) * progress | 0);
        1 > progress && requestAnimationFrame(animate)
    })
};
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

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

Похожие вопросы