+375 (29) 174-29-71 +375 (29) 774-29-71
Главная Блог Веб-разработка Как зафиксировать меню при прокрутке

Как зафиксировать меню при прокрутке

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

Одним из самых распространенных способов является фиксирование верхнего меню при прокрутке. Можно фиксировать и боковое меню, но оно должно быть при этом последнем в блоке. Когда это маленький сайт, то проблем быть не должно, однако на более-менее крупном сайте/портале добиться этого весьма проблематично. Поэтому фиксирование верхнего меню – это распространенный популярный способ при разработке сайтов. Что оно дает:

  • Возможность зафиксировать всю шапку целиком вместе с телефонами, поиском, меню и логотипом.
  • Повышение юзабилити, т.к. навигация всегда под рукой, а узкий блок шапки занимает мало место и не отвлекает от просмотра информации.
  • Гармоничный внешний вид. Шапка, как правило, выполняется в той же стилистике что и сайт целиком, поэтому фиксирование шапки не должно отпугивать и раздражать посетителя.

Для фиксирования верхнего меню при прокрутке нам понадобится 2 составляющие: CSS и код javascript (если ваша меню прибито к самому верху экрана изначально, то можно обойтись без него).

Добавляем правила CSS для вашего меню/блока (шапки):

шапка

header{
   height:120px;
}

фиксированное плавающее меню

  #top_nav{
top: 120px;
position: fixed;
z-index: 999;
}

Теперь добавляем скрипт на страницу шаблона сайта или индексную страницу:

<script>
  var h_hght = 120; // высота шапки
  var h_mrg = 0;     // отступ когда шапка уже не видна
  $(function(){
   $(window).scroll(function(){
      var top = $(this).scrollTop();
      var elem = $('#top_nav');
      if (top+h_mrg < h_hght) {
       elem.css('top', (h_hght-top));
      } else {
       elem.css('top', h_mrg);
      }
    });
  });
</script>

Это простой пример фиксирования меню. Живой пример сайта с фиксированным меню можно посмотреть тут.