2016-08-18 2 views
1

я понял, как сделать scrollTop так:.scrollTop к элементу с фиксированным баннером на верхней части экрана

$("#nav-home").click(function() { 
    $('html, body').animate({scrollTop: $("#content-home").offset().top}, 800); 
}); 

Но моя проблема заключается в том, что у меня есть фиксированный баннер в верхней части экрана, так что, когда его прокручивает страничную часть элемента #content-home, спрятанный баннером.

Кроме того, я использую это:

var hheight = $(".mainh").height(); 
var theight = hheight + 14; 
$("#first-content").css("margin-top", mheight + "px") 

автоматически добавить верхнее поле в зависимости от высоты баннера + 2 * 7px границы (+ 14). Я знаю, что это глупо, но я доволен тем, что он работает таким образом.

Так что я прошу что-то вроде способа добавить больше к офсету. Или, возможно, добавьте смещение первого элемента, на которое влияет «калькулятор полей», о котором я упомянул выше.

Если бы вы могли помочь мне с этим и, возможно, даже добавить несколько советов, я был бы действительно счастлив.

ответ

1

Почему не вычесть высоту баннера на scrollTop числа?

var contentTop = $("#content-home").offset().top; 
var hheight = $(".mainh").outerHeight(true); // the 'true' in the statement will include the top and bottom margin of the element, if they exist. 
var scrollTopY = contentTop - hheight; 

$("#nav-home").click(function() { 
    $('html, body').animate({scrollTop: scrollTopY}, 800); 
}); 
+0

Спасибо, ваш ответ мне помог. Но мне пришлось заменить «+ hheight» на «- hheight» по какой-то причине, когда у меня был +, он прокручивался отлично, но к следующему элементу после контента. Я действительно не знаю, почему это произошло, но мне все равно, так как сейчас он работает нормально. – MasterTX

+0

@MasterTX вы правы, конечно, мы должны вычитать высоту заголовка, а не добавлять его! Мой ответ был отредактирован, чтобы исправить это ~ –

0

использовать этот

$ ('mainh'). OuterHeight (правда)