Июль
Создаём адаптивное модальное окно jquery
В статье о создание модального окна на 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