Можно использовать jquery
https://www.w3schools.com/howto/tryit.asp?filename...
...
$('html, body').animate({
scrollTop: $(hash).offset().top
}, 800, function(){
// Add hash (#) to URL when done scrolling (default click behavior)
window.location.hash = hash;
});
В примере по ссылке число 800 - скорость анимации
-----------------------
https://javascript.info/js-animation
animate({
duration: 1000,
timing(timeFraction) {
return timeFraction;
},
draw(progress) {
window.scrollTo({
top: progress * 100, // всесто 100 устанавить позицию хеша +/- начальную позицию
left: progress * 100,
behavior: 'smooth'
});
}
});
Нашел инфу, где можно сделать функцию анимации на чистом js. Остальное, думаю, можешь сам добыть - ивенты на клик итп