JSFiddle - React, Tailwind, and code Playground

HTML

<div id="wrapper">
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. In lectus mi, venenatis et pretium id, mollis vel libero. Proin ultricies, tellus tempor semper ultrices, purus nunc sollicitudin tellus, et vehicula dolor turpis vitae erat. Aliquam vel adipiscing purus. Pellentesque ac elit vitae ante viverra aliquet id ac turpis. Curabitur at volutpat neque. Vestibulum sagittis sagittis ipsum in feugiat. Nunc lobortis eu metus sed semper. Ut sed posuere leo. Cras quam orci, iaculis quis lorem ut, porttitor consectetur felis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla justo velit, luctus sed magna at, convallis luctus quam. Praesent est nisi, sagittis quis facilisis a, condimentum et nisi. Quisque et libero sit amet diam adipiscing scelerisque eu quis elit. Quisque ut ultricies sem. Mauris lacinia interdum lacus, at tempor nisi aliquam id. Vivamus sed magna varius, posuere neque non, scelerisque mauris. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nunc placerat nec velit non aliquet. Quisque faucibus risus nunc, eget consectetur diam malesuada sed. Vivamus eget ante non enim tincidunt accumsan. Sed molestie pharetra tellus pretium feugiat. Cras semper felis ac sollicitudin sollicitudin. Sed varius nunc sem, a vulputate dolor imperdiet ac. Suspendisse magna eros, pretium non adipiscing ac, iaculis quis arcu. Nam et scelerisque turpis. Sed elementum ut ligula non fermentum. Nam commodo viverra semper. Donec dolor tellus, laoreet et iaculis ac, fringilla non ante. Sed molestie sed nisl id faucibus. Aenean id mi feugiat, gravida leo et, tempus augue. Duis feugiat adipiscing erat, eget feugiat eros feugiat sit amet. Sed eleifend tristique odio, vel ultricies lectus. Vestibulum lacinia eros egestas sem scelerisque tincidunt. Morbi ut felis eget dolor lobortis...

JavaScript

var wrapper = document.getElementById("wrapper"); //get div
var h = wrapper.offsetHeight; //get height 

scrollTo(h);

function scrollTo(x) {
    //elapsed
    var e;
    //duration in milli seconds
    var d = 1000;
    //b as in begin, where to start (you could get this dynamically)
    var b = 0;
    //start time, when the animation starts
    var s = (new Date()).getTime(); //start time
    //the magic
    var t = setInterval(function () {
        //calculate elapse time 
        e = (new Date()).getTime() - s;
        //check if elapse time is less than duration
        if (e < d) {
            //animate using an easing equation
            window.scrollTo(0, ease(e, b, x, d));
        } else {
            //animation is complete, stop interval timer
            clearInterval(t);
            t = null;
        }
    }, 4);
}

//Info about the letters (I think)
//t = elapse time 
//b = where to begin 
//c = change in comparison to begin
//d = duration of animation
function noease(t, b, c, d) {
    t /= d;
    return b + c * (t);
}

function ease(t, b, c, d) {
    return Math.round(-c * Math.cos(t / d * (Math.PI / 2)) + c + b);
}