Bootstrap scrollspy ne reçoit que le décalage de hauteur en deuxième clic

J'ai créé une page avec bootstrap 3.2.1 et j'utilise scrollspy dans cette page. Dans le premier clic sur le menu, la hauteur du décalage ne fonctionne pas pour la page de défilement, mais après le deuxième clic, vous avez une hauteur de décalage.

Ce code fonctionne dans les navigateurs! Mais lorsque vous cliquez sur le titre 2 (ou le titre 3 ou le titre 4) pour la première fois, la page doit se défiler sur le titre 2 (ou Titre 3 ou Titre 4).

offsetHeight value = 120; 

Voir la démo en direct

Voir la démo jsfiddle

Cela parce que vous avez réglé la barre de navigation sur le mode défilement vers le bas (après y> 90). Donc, vous devez réduire la hauteur de la barre de navigation quand elle est corrigée.

Vous avez besoin d'une valeur dynamique, en fonction de votre code, une façon de le faire est d'utiliser une fonction avec les mêmes paramètres. La hauteur de la barre de navigation est de 30px, donc vous devez l'ajouter.

 function offsetHeight() { if ($(window).scrollTop() > 90) { return 120; } else { return 150; } }; 

JSFiddle