Это связано с вашим JavaScript. Якорь переносит вас в определенное место на странице, затем javascript меняет вкладку, что делает div в верхней части страницы больше. Это происходит после того, как страница была прокручена, что избавляет вас от привязки.
Попробуйте включить загрузку страницы с включенным JS и выключенным JS, вы поймете, что я имею в виду.
Как это исправить? Вы можете использовать jQuery для прокрутки до якоря в функции готовности документа, например:
$(function() {
var anchor = $('a[name="' + window.location.hash.replace('#', '') + '"]');
if(anchor) {
$('html, body').animate({scrollTop: anchor.offset().top});
}
});
Немного хакерское исправление, но это сработает. Лучше было бы убедиться, что JS не меняет макет готового документа:)