Este snippet de javascript te puede servir:
Código Javascript
:
Ver original$('nav a').click(function(e){
e.preventDefault(); //evitar el eventos del enlace normal
var strAncla=$(this).attr('href'); //id del ancla
var $distance = - 50; //distancia en pixeles desde el objetivo
var $tiempo = 1000; //tiempo en segundos => 1000 = 1seg
$('body,html').stop(true,true).animate({
scrollTop: $(strAncla).offset().top+$distance
},$tiempo);
});
Eso sí, esto usa Jquery, así que tienes que vincular la librería a u proyecto. No se mucho de javascript, por lo que no te puedo dar un snippet completamente vanilla, pero sería una mejor opción porque cargar una librería como jquery para solo hacer este efecto, no vale la pena.
Edito: Si entiendes más de programación que yo, te dejo un enlace a este post:
https://escss.blogspot.com.co/2016/0...to-css-js.html donde con solo js imitan el efecto, espero te sirva.