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

Много интересных вещей можно сделать на Javascript, с помощью использования библиотеки jquery. Она настолько удобна и проста, что даже начинающий программист быстро поймет, что к чему. Хотя не мешает под рукой иметь документацию по объектам и их методам.


#floating_window {
	top: 100px;
	position: absolute;

	/* В данном случае мы хотим располгать окно всегда по центру */
	left: 50%;

	z-index: 10;
	background: #FFFFFF;
	display: none;
}

Создадим такой объект стиля .css. В принципе, если нужно, то можно указать какие-нибудь другие параметры, к примеру width или height, однако в данном случае окно будет растягиваться автоматически, в зависимости от контента внутри него, что удобно.

Теперь, нужно написать Javascript. К слову, с помощью jQuery можно изменять любые параметры, находящиеся в .css стилях, суть как раз в этом и заключается.


$( document ).ready( function()
{

	// Значение отступа, выше которого блок не поднимается,
	// когда ползунок прокрутки на самом верху
	var MIN_TOP = 200;

	// Отступ от левого края блока контента,
	// может быть положительным или отрицательным
	var POSITIONLEFT = - 25;


	// Центрирование окна
	var width_minus = Math.floor( parseInt( $( '#message_box' ).css( "width" ) ) / 2 );

	$( '#message_box' ).css( "left", $( '#mycontent' ).offset().left + POSITIONLEFT + "px" );

	$( '#message_box' ).css( "top", MIN_TOP + "px" );

	$( '#message_box' ).show();


	$( window ).scroll( function()
	{
		var pos = parseInt( $( window ).scrollTop() );

		if ( pos < MIN_TOP ) pos = MIN_TOP;

		$('#message_box').animate({top:pos+50+"px" },{queue: false, duration: 200});

	});

	$( window ).resize( function()
	{

		$( '#message_box' ).css( "left", $( '#mycontent' ).offset().left + POSITIONLEFT + "px" );

	});

});

Как уже стало понятно, код практически элементарный. По сути, главное тут реализация ограничения положения плавающего окна, то есть оно не должно "уплывать" слишком далеко, за определенные рамки.

Теперь рассмотрим каждую строку более подробно. Например, позицию окну задает следующий код:


$('#message_box').animate({top:pos+50+"px" },{queue: false, duration: 200});

То есть сначала выбираем элемент, id которого равен message_box, а затем вызываем от него функцию animate. Как можно догадаться из названия, эта функция предназначена для создания различных эффектов, будь то появления, исчезновения или плавного движения окна.

{top:pos+50+"px"} – этот кусок присваивает top: значение pos+50+"px", то есть изменяет сам стиль. duration:200 в данном случае передает скорость анимации, чем оно больше, тем медленнее движется окно. Можно поставить 0, тогда окно будет двигаться без задержки, но, тут есть минус, окно будет прыгать и создавать неприятный эффект для глаза. Чтобы избежать этого, необходимо воспользоваться другой функцией - css, которая просто присваивает элементам нужные значения.

Собственно, теперь стоит поговорить об обработчиках функций.

$( document ).ready( function() - вызывается, когда страница загружена и готова к работе. То есть в ней удобно и нужно проставлять стартовые значения переменных и прочие вещи, которые потом будут использоваться.

$( window ).scroll( function() – функция вызывается, когда страницу прокручивают. Непосредственно узнать степень прокрутки страницы, можно, вызвав $( window ).scrollTop().

$( window ).resize( function() – это тоже очень важная функция, вызов которой происходит в момент изменения размера окна браузера.

Вот и все. Чтобы это заработало, нужно придать блоку данных, относительно которого будет размещен блок окна, параметр id='mycontent', а блоку, который будет представлять собой это плавающее окно, id='message_box'.

captcha

Что такое облачное хранилище и как им пользоваться? Что такое облачное хранилище и как им пользоваться?
Как выбрать пластины для теплообменника? Пластины для теплообменника
Изучение языка ECMAScript: основа современной веб-разработки История языка ECMAScript
Как добавить комментарий в HTML? HTML примеры
Apple позволит разработчикам распространять приложения напрямую с их сайтов Apple позволит разработчикам распространять приложения напрямую с их сайтов
jQuery 4.0 сокращает поддержку браузеров, удаляет API Новое в jQuery 4.0
Как продвинуть Telegram-канал: с нуля до результата Как продвинуть канал в Telegram с нуля?
Получить IT профессию с нуля: академия Eduson Получить IT профессию с нуля
Перспективы эволюции SEO: встречайте будущее продвижения в поисковых системах Будущее SEO-продвижения
Создание сайтов в Алматы: агентство site-promote.com Разработка сайта компании
Антипкин Михаил Сергеевич о метавселенной, открывающей безграничные возможности для инноваций и экспериментов Антипкин Михаил Сергеевич о метавселенной
Сёрфинг с браузером FraudFox: исчерпывающее руководство Сёрфинг с браузером FraudFox
Где найти лицензионные ключи активации к ПО? Где найти лицензионные ключи активации к ПО?
Курсы веб дизайна: обучение онлайн Курсы веб дизайна: обучение онлайн
Как продлить срок службы бытовой техники? Как продлить срок службы бытовой техники?
Основы VPS/VDS: что нужно знать перед арендой? Основы VPS/VDS: что нужно знать перед арендой?
Откройте для себя азарт Mostbet KZ - ведущего онлайн-казино для геймеров Откройте для себя азарт Mostbet KZ - ведущего онлайн-казино для геймеров
Топ-10 игр для Android стоимостью менее $5 Топ-10 игр для Android стоимостью менее $5
Проверка авто в базе ГИБДД перед покупкой Проверка авто в базе ГИБДД перед покупкой
Бизнес-психология в онлайн-институте Smart Бизнес-психология в онлайн-институте Smart