Простой способ зафиксировать блок по горизонтали или вертикали.

Веб-программирование 19 декабря 2014 г., 7:31

Как хорошо известно, свойство CSS «position:fixed» распространяется как на вертикальное, так и на горизонтальное прокручивание.

 

Пример 1

 

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8" />
	<title></title>
	<script src="http://yandex.st/jquery/1.8.1/jquery.min.js"></script>

	<style>
	.wrapper{ width: 2500px; height: 2500px;}
	#menu{ width: 200px; height: 150px; background: yellow; position: fixed; top: 0px; left:0px;}
	</style>
</head>

<body>
	<div class="wrapper">

		<div id="menu">

		</div>

	</div>
</body>
</html>

 

Как видите, желтый квадрат всегда зафиксирован в левом верхнем углу, куда бы мы не скроллировали. Но если вам надо сделать зафиксированное меню, которое будет всегда видно по вертикали, но по горизонтали нет.

 

Пример 2

 

Но что поменялось в этом примере? Давайте глянем код

 

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8" />
	<title></title>
	<script src="http://yandex.st/jquery/1.8.1/jquery.min.js"></script>

	<style>
	.wrapper{ width: 2500px; height: 2500px;}
	#menu{ width: 200px; height: 150px; background: yellow; position: absolute; top: 0px; left:0px;}
	</style>
</head>

<body>
	<div class="wrapper">

		<div id="menu">

		</div>

	</div>

	<script>
		$(document).scroll(function(){
			$('#menu').css({
				top: $(document).scrollTop()
			});
		});
	</script>

</body>
</html>

 

Во втором примере, position:fixed мы заменили на position:absolute; а фиксирование по вертикали, сделали через jQuery. Скрипт обрабатывает скролл и устанавливает значение top равное $(document).scrollTop(), то есть текущее значение отступа прокрутки для всего документа.

 

Теперь давайте сделаем тоже самое, для горизонтальной прокрутки (скроллирования).

 

Пример 3

 

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8" />
	<title></title>
	<script src="http://yandex.st/jquery/1.8.1/jquery.min.js"></script>

	<style>
	.wrapper{ width: 2500px; height: 2500px;}
	#menu{ width: 200px; height: 150px; background: yellow; position: absolute; top: 0px; left:0px;}
	</style>
</head>

<body>
	<div class="wrapper">

		<div id="menu">

		</div>

	</div>

	<script>
		$(document).scroll(function(){
			$('#menu').css({
				left: $(document).scrollLeft()
			});
		});
	</script>

</body>
</html>

 

В этом скрипте, мало что изменилось, за исключением одного, в javascript мы обрабатываем не отступ сверху, а отступ слева, и устанавливаем в стили не top значение, а left.

left: $(document).scrollLeft()

Теги: html css jquery 0


Станьте первым!

Пожалуйста, авторизуйтесь или зарегистрируйтесь для комментирования!

Яндекс.Метрика