@Bembolat

Как при событии scroll сделать прокрутку до необходимого блока?

Ребят подскажите как реализовать на нативном js?
Функция плавного скролла у меня есть
spoiler
const anim = (sel, duration) => {
	let to = document.querySelector(sel).getBoundingClientRect().top,
      temp;
 
  return (sel) => {
      cancelAnimationFrame(temp); 
      var start = performance.now(); 
      var from = window.pageYOffset || document.documentElement.scrollTop;        
      requestAnimationFrame(function step(timestamp) {
          var progress = (timestamp - start) / duration;
          1 <= progress && (progress = 1);
          window.scrollTo(0, from + to * progress | 0);  
          1 > progress && (temp = requestAnimationFrame(step))
      });
  }

}

И она у меня работает например если вешаю на кнопку, но когда ставлю ее на событие скролла
document.addEventListener("scroll", anime(".last-block", 1000), false);

то у меня страница начинает плавно подниматься вверх и бесконечно тресется.
  • Вопрос задан
  • 122 просмотра
Пригласить эксперта
Ответы на вопрос 2
Kozack
@Kozack Куратор тега JavaScript
Thinking about a11y
Попробуйте прерывать событие самого скролла
Ответ написан
aM-aM
@aM-aM
Люблю js
Может так, только наверное дописать функцию anime? без addEventListener("scroll"
button.addEventListener("click", function(e) {
  e.preventDefault();
  anime(".last-block", 1000);
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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