2016
24
Июль

Создаём адаптивное модальное окно jquery

grigoriev
8515
модальное окно jquery
посмотреть click css
DEMO

В статье о создание модального окна на css мы разобрали что такое модальное окно и зачем оно нужно. А так же создали окно используя только css. В этой статье я опишу как создать модальное окно javascript. А конкретнее мы будем для создания использовать библиотеку jquery.

И так начнём создавать модальное окно на jquery. Для усложнения задачи поставим такое условие. Нам нужно будет создать адаптивное модальное окно. А адаптивность будет заключаться в том, что окно при уменьшении размера экрана то же будет уменьшаться. Адаптивное модальное окно jquery начнём создавать с html разметки.

        <div class="wraper">
            <div class="boxbutt">
                   <div class="button" id="gowindow">Жми здесь!</div>
            </div>
            <div id="modal_window">
                         <span id="window_close">X</span>
                         <h2>Заказать звонок</h2>
            </div>
            <div id="myoverlay"></div>
        </div>
    

С кодом я думаю всё понятно. Имеем оболочку .wraper, где находится контент нашего сайта. Есть кнопка вызова модального окна с идентификаторм gowindow, само окно с ид modal_window и перекрывающий слой myoverlay. Напишем теперь css стили.

    .wraper {
        width: 100%;
        margin: auto;
        width: auto;/*то же что и 100%*/
        max-width: 960px;/*максимальная ширина обёртки*/
        border: 1px solid #000;
        background-color: #F5F9FB;    
    }
    .button{
        /*-------*/
    }
    #modal_window {
        width: 34%;/*для адаптивности*/
        height: 300px; 
        border-radius: 10px;
        border: 3px #fff solid;
        background: #e0e0e0;
        margin-top: -30%;
        margin-left: 33%;
        display: none;
        opacity: 0; /*полная прозрачность для анимации */
        z-index: 5000; /*окно должно быть верхним слоем*/
        padding-top: 20px; 
        text-align: center; 
        position: relative;
    }
    #modal_window #window_close {
        width: 21px;
        height: 21px;
        position: absolute;
        top: 10px;
        right: 10px;
        cursor: pointer;
        display: block;
    }
    #myoverlay {
        z-index: 3000; /*выше всех слоёв но ниже окна */
        position: fixed; /*для перекрытия сайта*/
        background-color: #000;
        opacity: 0.5; 
        width: 100%; 
        height: 100%; /*полностью на экран */
        top: 0; 
        left: 0;
        cursor: pointer;
        display: none;
    }
    

Опишем css код. Блок .wraper задаём адаптивным, он меняется от размера экрана но не более 960px. Код кнопки показывать не буду. Ширину окна #modal_window задаём в процентах, ширина будет зависеть от ширины .wraper. Для центровки окна задаём марджин 33%. Он расчитывается так 50%-17%, где 17% половина ширины окна. Скрываем окно свойствами display: none и opacity: 0. С кодом #window_close и #myoverlay я думаю всё ясно. Давайте теперь напишем код для jquery. Будем считать что jqery уже подключена.

$(document).ready(function() {
    $('#gowindow').click( function(){//клик по кнопке
         $('#myoverlay').fadeIn(400, //показываем перекрывающий слой
             function(){
                 $('#modal_window') 
                     .css('display', 'block') //делаем окно видимым
                     .animate({opacity: 1, top: '50%'}, 200); //увеличиваем прозрачность, окно плавно съезжает
         });
     });
     /* убираем окно */
     $('#window_close, #myoverlay').click( function(){ //нажатие по перекрывающему слою или кресту
         $('#modal_window')
             .animate({opacity: 0, top: '45%'}, 200,  //вкл прозрачность, окно идёт вверх
                 function(){
                     $(this).css('display', 'none'); //делаем окно невидимым
                     $('#myoverlay').fadeOut(400); //убираем слой перекрытие
                 }
             );
     });
});

Js код я думаю в объяснении не нуждается, так как я его достаточно хорошо прокомментировал. На этом я думаю всё, так что подведём итоги. Мы сделали простое адаптивное модальное окно jquery

Поделиться:

You have no rights to post comments

Используя данный сайт, вы даете согласие на использование файлов cookie, помогающих мне сделать его удобнее для вас. Уведомление о cookie