JSFiddle - React, Tailwind, and code Playground
HTML
<div id="menu">menu</div>
<section id="produto1">Produto 1
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
</section>
<section id="produto2">Produto 2
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
</section>
<section id="produto3">Produto 3
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
</section>
CSS
#menu{
position:fixed;
height:100px;
width:100%;
background:#ff0;
}
JavaScript
/**
* Check a href for an anchor. If exists, and in document, scroll to it.
* If href argument ommited, assumes context (this) is HTML Element,
* which will be the case when invoked by jQuery after an event
*/
function scroll_if_anchor(href) {
href = typeof(href) == "string" ? href : $(this).attr("href");
// You could easily calculate this dynamically if you prefer
var fromTop = 180;
// If our Href points to a valid, non-empty anchor, and is on the same page (e.g. #foo)
// Legacy jQuery and IE7 may have issues: http://stackoverflow.com/q/1593174
if(href.indexOf("#") == 0) {
var $target = $(href);
// Older browser without pushState might flicker here, as they momentarily
// jump to the wrong position (IE < 10)
if($target.length) {
$('html, body').animate({ scrollTop: $target.offset().top - fromTop } ,1000, 'easeOutSine');
if(history && "pushState" in history) {
history.pushState({}, document.title, window.location.pathname + href);
return false;
}
}
}
}
// When our page loads, check to see if it contains and anchor
scroll_if_anchor(window.location.hash);
// Intercept all anchor clicks
$("body").on("click", "a", scroll_if_anchor);