Довольно часто на сайтах можно повстречать модальные окна, и все они используются для разных задач. В самом деле, это довольно мощное средство, которое позволяет сделать интерфейс сайта более интерактивным и удобным. К примеру, модальные окна могут быть использованы для различных форм, таких как форма авторизации, форма обратной связи, оформление заказа товара, да и мало ли.
В данном посту мы рассмотрим пример, как сделать модальное простое окно с помощью JQuery и CSS. Особенность данного примера в том, что тут не требуется дополнительные плагины, ну за исключением самой библиотеки JQuery.
Размещаем код модального окна на странице:
<div id="modal_form"> <span id="modal_close">закрыть</span> </div> <div id="overlay"></div> <a href="#" class="modal">Открыть модальное окно</a>
Как видно из разметки, блок самого модального окна это div c атрибутом id=modal_form, который содержит элемент span c id=modal_close. Этот элемент будет служить кнопкой для закрытия модального окна, кроме того, ниже блока расположен блок div с атрибутом id=overlay, который служит одновременно и для затемнения фона. Модальное окно будет открываться по ссылке, с классом modal.
Далее следует оформить разметку должным образом, для этого задаем стили для модального окна.
CSS для модального окна
#modal_form {
width: 300px;
height: 300px;
border-radius: 5px;
border: 3px #000 solid;
background: #fff;
position: fixed;
top: 45%;
left: 50%;
margin-top: -150px;
margin-left: -150px;
display: none;
opacity: 0;
z-index: 5;
padding: 20px 10px;
}
#modal_form #modal_close {
width: 21px;
height: 21px;
position: absolute;
top: 10px;
right: 10px;
cursor: pointer;
display: block;
}
#overlay {
z-index:3;
position:fixed;
background-color:#000;
opacity:0.8;
-moz-opacity:0.8;
filter:alpha(opacity=80);
width:100%;
height:100%;
top:0;
left:0;
cursor:pointer;
display:none;
}
Для modal_form мы задали фиксированную ширину и высоту, а затем отцентрировали положение по центру экрана. Для подложки модального окна (overlay) мы задаем размер по ширине экрана, заливку с прозрачностью, а так же прячем её по умолчанию. Особый момент с z-index, у модального окна он должен быть наибольшим из всех элементов на странице, а у обложки должен быть больше всех элементов, кроме самого модального окна.
Теперь к самому основному, это код на javascript. Для модального окна будет использоваться два основных события, это его открытие — клик по элементу с классом modal, в нашем случае это ссылка, и закрытие модального окна, это клик по обложке (overlay), либо клик на кнопку закрыть, в нашем случае это элемент span с id=modal_close.
$(document).ready(function() {
$('.modal').click( function(event){
event.preventDefault();
$('#overlay').fadeIn(400, // анимируем показ обложки
function(){ // далее показываем мод. окно
$('#modal_form')
.css('display', 'block')
.animate({opacity: 1, top: '50%'}, 200);
});
});
// закрытие модального окна
$('#modal_close, #overlay').click( function(){
$('#modal_form')
.animate({opacity: 0, top: '45%'}, 200, // уменьшаем прозрачность
function(){ // пoсле aнимaции
$(this).css('display', 'none'); // скрываем окно
$('#overlay').fadeOut(400); // скрывaем пoдлoжку
}
);
});
});
Посредством animate мы меняем позицию по вертикали top, а так же прозрачность opacity, и с помощью этого получаем интересный эффект. Подобный эффект используется как при открытии окна, так и при его закрытии. Отличие в том, что меняется порядок применения свойств для блоков, тем самым визуализируя открытие и закрытие окна.
Пример работы модального окна.