Блок, фиксированный при прокрутке

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

Метод основан на CSS-свойстве position: fixed и методе JQuery $(window).scroll().

<div class="fixed-box"> нужен для того чтобы не прыгали блоки, которые следуют за ним и он должен быть с фиксированной высотой.

<div class="fixed-box">
	<div class="fixed-div">
		Код меню или баннера...
	</div>
</div>
HTML
$(function(){
	$nav = $('.fixed-div');
	$nav.css('width', $nav.outerWidth());
	$window = $(window);
	$h = $nav.offset().top;
	$window.scroll(function(){
		if ($window.scrollTop() > $h) {
			$nav.addClass('fixed');
		} else {
			$nav.removeClass('fixed');
		}
	});
});
JS
.fixed-box {
	height: 60px;
}
.fixed-div {
	height: 60px;
}
.fixed {
	position: fixed;
	z-index: 9999;
	top: 0;
}
CSS
1

HTML разметка

<!DOCTYPE HTML>
<html>
<head>
	<title></title>
	<meta charset="utf-8">
</head>
<body>
	<div class="fixed-box">
		<div class="fixed-div">
			Код меню или баннера...
		</div>
	</div>
	<p>...</p>
</body>
</html>
HTML

JS

$(function(){
	$nav = $('.fixed-div');
	$nav.css('width', $nav.outerWidth());
	$window = $(window);
	$h = $nav.offset().top;
	$window.scroll(function(){
		if ($window.scrollTop() > $h){
			$nav.addClass('fixed');
		} else {
			$nav.removeClass('fixed');
		}
	});
});
JS

Стили

.fixed-box {
	height: 40px;
}
.fixed-div {
	height: 20px;
	text-align: center;
	background: #FFA500;
	padding: 10px 0;	
}
.fixed {
	position: fixed;
	z-index: 9999;
	top: 0;
}
CSS

Результат

2

HTML разметка

<!DOCTYPE HTML>
<html>
<head>
	<title></title>
	<meta charset="utf-8">
</head>
<body>
	<div class="rows">
		<div class="left-col">
			<p>...</p>
		</div>
		<div class="right-col">
			<p>Правая колонка</p>
			<div class="fixed-box">
				<div class="fixed-div">
					Код меню или баннера...
				</div>
			</div>
		</div>
	</div>
</body>
</html>
HTML

JS

$(function(){
	$nav = $('.fixed-div');
	$nav.css('width', $nav.outerWidth());
	$window = $(window);
	$h = $nav.offset().top;
	$window.scroll(function(){
		if ($window.scrollTop() > $h) {
			$nav.addClass('fixed');
		} else {
			$nav.removeClass('fixed');
		}
	});
});
JS

Стили

.rows {
	overflow: hidden;
}
.left-col {
	width: 60%;
	float: left;
	text-align: justify;
}
.right-col {
	margin-left: 65%;
}
.fixed-box {
	height: 200px;
}
.fixed-div {
	height: 180px;
	text-align: center;
	background: #FFA500;
	padding: 10px 0;	
}
.fixed {
	position: fixed;
	z-index: 9999;
	top: 0;
}
CSS

Результат

3

В Bootstrap реализован плагин affix – http://getbootstrap.com/javascript/#affix

Включить его можно добавив атрибуты к тегу:

<div data-spy="affix" data-offset-top="60" data-offset-bottom="200">
	Код баннера...
</div>
HTML

Или через JS:

<div id="myAffix">
	Код баннера...
</div>

<script>
$(function(){
	$('#myAffix').affix({
		offset: {
			top: 60,
			bottom: 60
		}
	});
});
</script>
HTML
13.01.2017, обновлено 19.01.2020
31321
Предыдущая запись Ссылка в заголовке UI Accordion
Следующая запись Табы/вкладки на jQuery

Комментарии

, чтобы добавить комментарий.

Другие публикации

Модальные окна на Fancybox 3
Fancybox 3 плагин галерей и модельных окон, в отличии от второй версии существенно изменилась скорость работы, дизайн и немного API, далее подробнее о вызове модальных окон.
64967
+2
Стилизация Checkbox
Несколько примеров как изменить внешний вид чекбоксов с помощью CSS, изображений и немного JS.
73968
+3
Contenteditable – текстовый редактор
Если добавить атрибут contenteditable к элементу, его содержимое становится доступно для редактирования пользователю, а...
43643
+34
Примеры отправки AJAX JQuery
AJAX позволяет отправить и получить данные без перезагрузки страницы. Например, делать проверку форм, подгружать контент и т.д. А функции JQuery значительно упрощают работу.
273536
+36
Модальное окно на затемненном фоне
Для модальных окон есть множество плагинов такие, как fancybox, Twitter Bootstrap и т.д. Но бывают случаи когда нет...
68266
+23
Кнопки прокрутки страницы вверх и вниз jQuery
Несколько примеров как сделать кнопки прокрутки страницы вверх и вниз. Для скроллинга используется jQuery функция...
35023
+6