Довольно часто на сайтах можно повстречать модальные окна, и все они используются для разных задач. В самом деле, это довольно мощное средство, которое позволяет сделать интерфейс сайта более интерактивным и удобным. К примеру, модальные окна могут быть использованы для различных форм, таких как форма авторизации, форма обратной связи, оформление заказа товара, да и мало ли.
В данном посту мы рассмотрим пример, как сделать модальное простое окно с помощью 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, и с помощью этого получаем интересный эффект. Подобный эффект используется как при открытии окна, так и при его закрытии. Отличие в том, что меняется порядок применения свойств для блоков, тем самым визуализируя открытие и закрытие окна.
Пример работы модального окна.