Смещение к якорю на высоту меню
Скрипт вычислит высоту меню и переместит пользователя к якорю за вычетом высоты меню. Таким образом меню не будет перекрывать заголовок (начало) якоря.
$( document ).ready(function() {
//получаем высоту панели
var headerHeight = $('.navbar-default').outerHeight();
$('a').on('click', function(e) {
// определяем все якорные ссылки и высчитываем высоту к блоку прокрутки
var $anchor = $(this);
$('html, body').stop().animate({
scrollTop: $($anchor.attr('href')).offset().top - headerHeight
}, 1500, 'easeInOutExpo');
event.preventDefault();
//добавляем якорь в url
history.pushState({}, "", this.href);
});
});
Где .navbar-default - класс фиксированного меню.