Лайтбокс эффект на jQuery

Библиотека jQuery обладает массой возможностей в области оформления и управления элементами. Давайте на простом примере разберем, как реализовать плавно появляющийся блок в Lightbox (лайтбокс эффект) с помощью jQuery.

Как это работает?

Для начала необходимо сформировать HTML-содержимое страницы:

<div class="overlay"></div>
<div class="lightbox">
	<h3>Lightbox эффект</h3>
	<a href="#" class="close"><img src="/close.png" alt="Закрыть" /></a>
	<p>Lightbox открыт. Здесь Вы можете увидеть содержимое Вашего блока.</p>
</div>
<a href="#" class="open">Открыть Lightbox</a>

Из кода мы видим, что у нас есть ссылка <a href=»#» class=»open»></a>, нажав на которую появляется блок с нашим содержимым <div class=»lightbox»></div>. При появлении этого блока, область сайта затемняется при помощи заданного в самом начале блока <div class=»overlay»></div>. В нашем блоке также имеется ссылка <a href=»#» class=»close»></a>, при нажатии на эту ссылку или же в любом пустом месте вне нашего блока, окно Lightbox закроется.

Перейдем к оформлению окна Lightbox. В коде ниже отмечены свойства display: none; для блоков с классами .overlay и .lightbox, это необходимо для того, чтобы на начальном этапе при открытии страницы блок с нашим содержимым, а также блок затенения были скрыты. Блоку с классом .overlay зададим фиксированную позицию от левого верхнего угла, чтобы этот блок был полупрозрачным, добавим свойство opacity: 0.8

.overlay {
	display: none;
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	z-index: 1;
	background: #000;
	opacity: 0.8;
}
   
.lightbox {
	display: none;
	width: 500px;
	padding: 25px;
	background: #ffffff;
	box-shadow: 0 0 25px #111111;
	-moz-box-shadow: 0 0 25px #111111;
	-webkit-box-shadow: 0 0 25px #111111;
	border-radius: 10px;
	-moz-border-radius: 10px;
	-webkit-border-radius: 10px;
	z-index: 99;
} 
   
a.close {
	position: absolute;
	top: 15px;
	right: 15px;
}

И последнее, что нам необходимо для полноценного функционирования окна Lightbox — это добавить скрипт обработки событий

jQuery(document).ready(function () {
	//Установить lightbox позицию в центре экрана
	jQuery('.lightbox').css({
		position: 'fixed',
		top:'50%',
		left:'50%',
		margin:'-'+(jQuery('.lightbox').height() / 2)+'px 0 0 -'+(jQuery('.lightbox').width() / 2)+'px'
	});

	// Показать lightbox маску, если нажатия на ссылку
	jQuery('a.open').click(function(e) {
		e.preventDefault();
		jQuery('.lightbox').fadeIn(800);
		jQuery('.overlay').fadeIn(800);
	});

	// Скрыть  lightbox и  маску, если мышка нажата вне блока
	jQuery('a.close, .overlay').click(function(e) {
		e.preventDefault();
		jQuery('.lightbox').fadeOut(800);
		jQuery('.overlay').fadeOut(800);
	});
});

Разберем подробнее, что мы делаем:

jQuery(‘.lightbox’).css({ — добавляем CSS-свойства в lightbox элемент, устанавливаем фиксированную позицию по центру, даже во время прокрутки, а также устанавливаем отступ margin в соответствии с шириной и высотой lightbox элемента. Всё это позволит нам зафиксировать блок с нашим содержимым в центре даже во время прокрутки.

jQuery(‘a.open’).click(function(e) { — с помощью этой функции мы отображаем lightbox элемент и маску с угасания. Устанавливаем скорость затемнения и угасания 800, Вы можете сделать это быстрее или медленнее за счет уменьшения или увеличения значения соответственно.

jQuery(‘a.close, .overlay’).click(function(e) { — данной функцией мы просто скрываем lightbox элемент и наложения элементов при помощи FadeOut, в случае, если мышка была нажата или на ссылку закрытия окна Lightbox.

Таким простым способом мы создали лайтбокс эффект на jQuery.

Вы можете скачать пример работы данного скрипта из вложения в конце статьи.

Комментарии

Здесь еще никто не оставлял комментарии.

Добавить комментарий