Придерживание Div к вершине после прокрутки Прошлое

Прямо сейчас, я могу придерживать div до вершины после прокрутки вниз 320px, но я хотел знать, есть ли другой способ достижения этого. Ниже у меня есть код:

jQuery(function($) {
    function fixDiv() {
        if ($(window).scrollTop() > 320) { 
            $('#navwrap').css({ 'position': 'fixed', 'top': '0', 'width': '100%' }); 
        }
        else {
            $('#navwrap').css({ 'position': 'static', 'top': 'auto', 'width': '100%' });
        }
    }
    $(window).scroll(fixDiv);
    fix5iv();
});

он работает, но некоторые divs над ним не всегда будут одинаковой высоты, поэтому я не могу полагаться на 320px. Как мне заставить это работать без использования if ($(window).scrollTop() > 320), чтобы я мог заставить его затухать вверху после того, как пользователь прокручивается мимо div #navwrap?

Ответ 1

Попробуйте использовать offset().top элемента #navwrap. Таким образом, элемент будет фиксирован из исходной позиции в документе, независимо от того, где это. Например:

function fixDiv() {
    var $div = $("#navwrap");
    if ($(window).scrollTop() > $div.data("top")) { 
        $div.css({'position': 'fixed', 'top': '0', 'width': '100%'}); 
    }
    else {
        $div.css({'position': 'static', 'top': 'auto', 'width': '100%'});
    }
}

$("#navwrap").data("top", $("#navwrap").offset().top); // set original position on load
$(window).scroll(fixDiv);

Пример скрипта