Доброго времени суток!
Часто вы могли замечать на сайтах такое меню, которой при прокрутке вниз фиксировалось в верху экрана. Также это может быть какой то блок, поиск и другие элементы.
Доброго времени суток!
Часто вы могли замечать на сайтах такое меню, которой при прокрутке вниз фиксировалось в верху экрана. Также это может быть какой то блок, поиск и другие элементы.
Чтобы его создать, нужно изначально знать, на какой высоте находится блок относительно верха в начальный момент времени. Эту координату можно задать как статически, так и динамически.
Как пример мы зафиксируем блок fixblock, который будет находится на определенном расстоянии от верха. Для осуществления нам понадобится следующий код
$(function() { var fixblock_height = $('#fixblock').height(); // определяем высоты фиксированного блока var fixblock_pos = $('#fixblock').position().top; ; // определяем его первоначальное положение $(window).scroll(function(){ if ($(window).scrollTop() > fixblock_pos){ // Если страницу прокрутили дальше, чем находится наш блок $('#fixblock').css({'position': 'fixed', 'top':'0px', 'z-index':'10'}); // То мы этот блок фиксируем и отображаем сверху. $('#head').css('padding-bottom', fixblock_height+'px'); // А чтобы это было плавно, добавляем отсуп снизу для верхнего блока (как будто этот блок там все еще есть) }else{ // Если же позиция скрола меньше (выше), чем наш блок $('#fixblock').css({'position': 'static'}); // то возвращаем все назад $('#head').css('padding-bottom', '0px'); // И убираем отступ } }) });
его нужно поместить перед закрывающимся
</head>
HTML код будет иметь примерно следующий вид:
<div id="head"></div> <div id="fixblock"> <div class="block-body"> Меню или другие блоки </div> </div> <div id="list"> <div class="content"> контент<br /><br /><br /> контент<br /><br /><br /> контент<br /><br /><br /> контент<br /><br /><br /> контент<br /><br /><br /> контент<br /><br /><br /> контент<br /><br /><br /> контент<br /><br /><br /> контент<br /><br /><br /> контент<br /><br /><br /> контент<br /><br /><br /> контент<br /><br /><br /> контент<br /><br /><br /> контент<br /><br /><br /> контент<br /><br /><br /> контент<br /><br /><br /> контент<br /><br /><br /> контент<br /><br /><br /> </div> </div>
ну и стили CSS:
#head{ width:100%; clear:both; background: #dbdbdc; height:70px; } #list{ margin:0px auto; width:1000px; } .content{ width:800px; float:left; height:2000px; color: #8b939c; font-size:30px; } #fixblock{ width:100%; height:50px; padding-bottom:18px; } #fixblock .block-body{ width:100%; height:45px; padding-top: 5px; background: #9d252f; text-align:center; color: #fff; }
Если все сделано правильно, то ваш фиксированный блок будет радовать вас и посетителей вашего сайта.