#javascript #jquery #scroll
#javascript #jquery #прокрутка
Вопрос:
Я пытаюсь использовать этот код:
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"));
});
Проблема в том, что когда я нажимаю на определенный элемент списка, прокрутка поднимается до верхней части окна. Но в моем случае у меня фиксированный div вверху, поэтому содержимое скрыто этим div. Ну, я хочу, чтобы прокрутка останавливалась перед div.
есть идея?
Ответ №1:
Вам нужно присвоить верхней панели идентификатор (например, id =»header»), а затем вычесть его из атрибута scrollTop:
$('html,body').animate({
scrollTop: ($("#" id).offset().top-$('#header').outerHeight(true)) 'px'},
'slow');
Комментарии:
1. На самом деле, после небольшого размышления, я думаю, что использовал бы
outerHeight(true)
здесь, чтобы также соблюдались любые поля на#header
.
Ответ №2:
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"));
});
Комментарии:
1. это, безусловно, работает; Я думаю, вы бы хотели, чтобы outerHeight () допускал заполнение, и, возможно, outerHeight (true) допускал поля 😉