jQuery posicionamiento de desplazamiento suave no funciona

Quiero usar un desplazamiento suave para mis enlaces de navegación, pero tengo una navegación fija, así que tengo que cambiar un poco la posición de aterrizaje. Ahora encontré la respuesta en este foro y se parece a esto:

$(document).ready(function(){ $('a[href^="#"]').on('click',function (e) { e.preventDefault(); var target = this.hash; $target = $(target); $('html, body').stop().animate({ 'scrollTop': $target.offset().top-100 }, 900, 'swing', function () { window.location.hash = target; }); }); }); 

El “top-100” debería funcionar, pero simplemente no … ¿Alguien tiene una idea? Gracias

Use partseInt para usar siempre el valor int en los navegadores.

 'scrollTop': parseInt($target.offset().top,10); 

La función parseInt () analiza un argumento de cadena y devuelve un número entero de la base o base determinada.

Sintaxis

 parseInt(string, radix); 
  • string : El valor a analizar. Si la cadena no es una cadena, entonces se convierte en una.
  • radix : Un entero entre 2 y 36 que representa el radix de la cadena mencionada anteriormente.

jQuery

 $(document).ready(function(){ $('a[href^="#"]').on('click',function (e) { e.preventDefault(); var target = this.hash; $target = $(target); $('html, body').stop().animate({ 'scrollTop': parseInt($target.offset().top,10) }, 900, 'swing', function () { window.location.hash = target; }); }); });