Сценарий ниже - это общее решение, которое работает для меня. Он основан на идеях, извлеченных из этой и других тем.
При нажатии на ссылку с атрибутом href, начинающимся с «#», она плавно прокручивает страницу до указанного элемента div. Там, где присутствует только «#», он плавно прокручивается вверх страницы.
$('a[href^=#]').click(function(){
event.preventDefault();
var target = $(this).attr('href');
if (target == '#')
$('html, body').animate({scrollTop : 0}, 600);
else
$('html, body').animate({
scrollTop: $(target).offset().top - 100
}, 600);
});
Например, когда приведенный выше код присутствует, нажатие на ссылку с тегом <a href="#">
прокручивает вверх страницы со скоростью 600. При нажатии на ссылку с тегом <a href="#mydiv">
прокручивается до 100px выше <div id="mydiv">
в скорость 600. Не стесняйтесь менять эти цифры.
Надеюсь, это поможет!