Salut ! Tu peux détecter l'évenement mousewheel sur ta page, qui te donnera un indicatif pour savoir si l'utilisateur scroll vers le haut ou vers le bas. à partir de là, tu bloques le scroll avec un e.preventDefault() et tu utilises la méthode scrollTo dans une setInterval pour l'animation de manière fluide (voire dans un requestAnimationFrame pour ne pas avoir de problème de granularité du temps).
J'espère que j'ai pu t'aider !