Как уменьшить меню навигации при прокрутке вниз?

для нового сайта, который я разрабатываю, я хотел бы уменьшить меню навигации, когда пользователь прокручивает вниз.

Что-то похожее на то, что вы можете увидеть на сайте IBM:http://www.ibm.com/us/en/

Я не мог найти реализацию jQuery или учебник вокруг (я уверен, что я должен искать неправильные ключевые слова)

поэтому, если кто-то может указать мне в правильном направлении, это сделает меня действительно счастливым.

спасибо вперед!

3 ответов


вот вы идете человек:

$(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); 
    }
  });
});

демо:http://jsfiddle.net/seancannon/npdqa9ua/


что вы делаете, это проверить значение прокрутки окна. Если он больше нуля, то пользователь прокрутил вниз. Если да, то спрячьте баннер (или уменьшите или что-то еще). Если они вернутся на вершину, то изменят ее.

http://jsfiddle.net/rxXkE/

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

});


Это сжимает и увеличивает панель навигации по мере прокрутки пользователя. Создал это из http://www.kriesi.at/themes/enfold/ панель навигации. Версия, которую я создал, работает почти так же. https://github.com/Jlshulman/Elastic-Bar