Проблема: если пользователь прерывает анимацию прокруткой, в следующий раз, когда он нажмет кнопку, появится анимация прокрутки. застревает – или иногда прокручивает только на 10–50 пикселей вместо полных 100 пикселей.
HTML
Код: Выделить всё
Код: Выделить всё
//Hero Arrow Scroll Button
var isScrolling = false;
let B1 = $(".B1");
$(document).on('click', '#js-hero-arrow', function() {
if (isScrolling === false) {
isScrolling = true;
scrollToElementTop(B1).then(() => {
isScrolling = false;
});
}
});
//Function to add a callback to the scroll element top
function scrollToElementTop (elem) {
const targetPosition = (elem.offset().top + elem.outerHeight(true));
window.scrollTo({
top: targetPosition,
behavior: 'smooth'
});
return new Promise(resolve => {
const scrollHandler = () => {
if (window.scrollY === targetPosition) {
window.removeEventListener('scroll', scrollHandler)
resolve();
}
}
window.addEventListener('scroll', scrollHandler)
});
}
Вопросы
Почему это происходит и что я могу сделать, чтобы это исправить?
Подробнее здесь: https://stackoverflow.com/questions/784 ... -sometimes
Мобильная версия