JSFiddle - React, Tailwind, and code Playground

HTML

<div id="menu">
    <a href="#_link1">Link 1</a>
    <a href="#_link2">Link 2</a>
    <a href="#_link3">Link 3</a>
</div>

<div class="header">Header</div>

<h1 id="link1">Link 1</h1>
Sea ad dolore vituperata, ut justo quaeque reformidans mel. Mei lorem audire an, in habeo dolor his, qui et diam causae. Eu autem dicant dicunt vim, no alia pertinax definitiones mea, ne eam fuisset suavitate definitionem. Eros elit oblique nam te. Vix error mandamus instructior ei, in essent scripta scribentur eos.

Vix graece patrioque in, verear saperet his no, his in error lucilius. Aliquam definiebas mei an, dolor utroque argumentum vim at. Pro ad saepe noster sensibus, id hinc justo euripidis eum. Tale reque deleniti usu ad. Dicta deseruisse ei eum, eos no falli laoreet dissentiet.

Et mea amet brute, id euismod maiestatis mea. Dicam aperiri fastidii ea sea. Omnis equidem at sea, affert veniam noster vix ei. Tation pertinax consequat vis in. Eam ne libris posidonium, no mea delenit appareat intellegam, simul probatus ad sed.

Vel an esse eros propriae, sint harum iusto no est. No mei molestie officiis. Ea officiis patrioque mei, ex vix dicta facilisi instructior. Clita nemore temporibus per ne, eu cum mollis dissentiet intellegebat, has meis temporibus disputando ex. Ius ignota splendide neglegentur ex, duo ex alterum atomorum theophrastus, qui ponderum facilisis gubergren ut.

Ut sonet virtute aliquando mea, an sit omnes salutatus. Est munere libris et, his voluptua honestatis eu. Ut pro consul disputationi, sea tation utamur feugiat ei. Quo at simul accusamus. Vis cu detracto dignissim.

Usu an solum aeque, pro cu velit movet, sea te vide petentium. Mei ad sonet soleat, eu vocent integre iudicabit has, et graeci commune appetere nec. Cu vocent iracundia mel. Vidit everti et sit. Ex etiam viris pro, decore cetero ex cum. Ne habeo graecis cum, eos suas fuisset hendrerit te, at diceret antiopam principes eam.

Inani aperiri imperdiet usu eu. Nisl autem mazim pri ea, sumo...

CSS

#menu{
    position:fixed;
    left: 20px;
    top: 60px;
    width: 100%;
}
#menu a{
    padding: 0 20px 0 0;
}
.header{
    position:fixed;
    top: 0;
    width:100%;
    padding: 20px;
    background: blue;
    text-align:center;
    color: white;
}

JavaScript

$(window).on('hashchange',function(){
    var header = 60;
    var value =  window.location.hash.replace('_', '');	
        
    var dest = $(value).position();
        
    if(typeof dest !== "undefined"){
         var dtop = dest.top;
        
         $('html, body').animate({
            scrollTop: dtop - header
        }, 1000);
        
    }
});