2011-07-15 14 views
9

Dla nowej strony, którą rozwijam, bardzo chciałbym zmniejszyć menu nawigacyjne, gdy użytkownik przewinie w dół.Jak zmniejszyć menu nawigacji podczas przewijania w dół?

Coś podobnego do tego, co można zobaczyć na stronie IBM: http://www.ibm.com/us/en/

nie mogłem znaleźć żadnego wdrożenie jQuery lub wychowawczy wokół (jestem pewien, że musi być poszukiwanie niewłaściwych słów kluczowych)

Więc jeśli ktoś może wskazać mi w dobrym kierunku, że sprawi, że będę naprawdę szczęśliwy.

Z góry dzięki!

Odpowiedz

37

Tutaj można przejść człowiek:

$(function(){ 
    var navStatesInPixelHeight = [40,100]; 

    var changeNavState = function(nav, newStateIndex) { 
    nav.data('state', newStateIndex).stop().animate({ 
     height : navStatesInPixelHeight[newStateIndex] + 'px' 
    }, 600);  
    }; 

    var boolToStateIndex = function(bool) { 
    return bool * 1;  
    }; 

    var maybeChangeNavState = function(nav, condState) { 
    var navState = nav.data('state'); 
    if (navState === condState) { 
     changeNavState(nav, boolToStateIndex(!navState)); 
    } 
    }; 

    $('#header_nav').data('state', 1); 

    $(window).scroll(function(){ 
    var $nav = $('#header_nav'); 

    if ($(document).scrollTop() > 0) { 
     maybeChangeNavState($nav, 1); 
    } else { 
     maybeChangeNavState($nav, 0); 
    } 
    }); 
}); 

Demo: http://jsfiddle.net/seancannon/npdqa9ua/

+3

Drodzy anonimowi ci, którzy nie biorą udziału w wyborach: czy chcesz wyjaśnić? Jak było to pomocne? – AlienWebguy

+0

świetne rozwiązanie +1 –

+0

idealne, świetna pomoc, dzięki! –

4

Co należy zrobić, to sprawdzić wartość przewijania okna. Jeśli jest większa niż zero, użytkownik przewinął w dół. Jeśli tak, ukryj baner (lub skurcz lub cokolwiek). Jeśli wrócą do początku, a następnie powtórz to.

http://jsfiddle.net/rxXkE/

$(window).scroll(function() { 
console.log($(window).scrollTop()); 
if ($(window).scrollTop() > 0) { 
    $(".banner").slideUp(); 
} 
else { 
    $(".banner").slideDown(); 
} 

});

+0

-1 To nie emuluje przykładu OP. To całkowicie ukrywa nawigację, która jest bezcelowa, ponieważ można po prostu przewinąć bez wykonywania animacji, a nawigacja zniknie z ekranu. – AlienWebguy

+1

@AlienWebguy To tylko przykład, patrz tekst "Jeśli tak, to ukryj baner (lub skurcz lub cokolwiek)". – jeroen

+0

Poważnie, dlaczego to się przebiło? Jest tak bezcelowe, jak '$ (window) .unload (function() {$ (this) .close();}' – AlienWebguy

Powiązane problemy