Reputation: 949
I am trying this code:
function goToByScroll(id){
id = id.replace("link", "");
$('html,body').animate({
scrollTop: $("#"+id).offset().top},
'slow');
}
$("#sidebar > ul > li > a").click(function(e) {
e.preventDefault();
goToByScroll($(this).attr("id"));
});
The problem is that when i click in a specific element of list, the scroll go up to the top of the window. But in my case i have a fixed div in the top, so the content is hidden by this div. Well, I want stops the scroll before the div.
any idea?
Upvotes: 2
Views: 10256
Reputation: 40582
You need to give the top bar an id (e.g. id="header") and then subtract that from the scrollTop attribute:
$('html,body').animate({
scrollTop: ($("#"+id).offset().top-$('#header').outerHeight(true))+'px'},
'slow');
Upvotes: 5
Reputation: 5565
function goToByScroll(id){
id = id.replace("link", "");
$('html,body').animate({
scrollTop: ($("#"+id).offset().top - $("#YOUR_FIXED_DIV").height() ) },
'slow');
}
$("#sidebar > ul > li > a").click(function(e) {
e.preventDefault();
goToByScroll($(this).attr("id"));
});
Upvotes: 4