Сегодня мы рассмотрим: Настоящие ценители музыки знают, что для качественного...
3. Пример модального окна jQuery, вызванного по ссылке (с Демо)
Скорее всего Вы уже не раз видели в интернете всплывающее модальное окно - подтверждение регистрации, предупреждение, справочная информация, загрузка файла и многое другое. В этом уроке я предложу несколько примеров по созданию самых простых модальных окон.
Создаём простое всплывающее модальное окно Приступим к рассмотрению кода простейшего модального окна, которое будет сразу появлятьсяjQuery код
$(document).ready(function()
{
alert("Текст во всплывающем окне");
});
Код вставляете в любое место в body
Вашей страницы. Сразу после загрузки страницы, без каких-либо команд, Вы увидите окно следующего вида:
А вот следующий код будет выполняться после загрузки всей страницы в браузер. В нашем примере после загрузки страницы с изображениями выскочит простое всплывающие окошко:
$(window).load(function()
{
alert("Загрузка страницы завершена!)");
});
Часто можете видеть, что форма входа и регистрации находятся именно в таких окнах. Приступим к делу
Для начала напишем html-часть . Этот код размещаем в body Вашего документа.
Вызов модального окна
Текст модального окна
Закрыть
Текст в модальном окне.
Код CSS . Либо в отдельном css-файле, либо в в head.
body {
font-family:verdana;
font-size:15px;
}
.link {color:#fff; text-decoration:none}
.link:hover {color:#fff; text-decoration:underline}
#mask {
position:absolute;
left:0;
top:0;
z-index:9000;
background-color:#000;
display:none;
}
#boxes .window {
position:absolute;
left:0;
top:0px;
-top: 40px;
width:440px;
height:200px;
display:none;
z-index:9999;
padding: 20px;
overflow: hidden;
}
#boxes #dialog {
width:375px;
height:203px;
padding:10px;
background-color:#ffffff;
}
.top {
position:absolute;
left:0;
top:0;
width:370px;
height:30px;
background: #0085cc;
padding: 8px 20px 6px 10px;
}
.close {
float:right;
}
.content {
padding-top: 35px;
}
В коде jQuery основное внимание уделим позиции модального окна и маске, в нашем случае постепенному затемнению фона.
Внимание! Не забываем подключить библиотеку в head документа!
Подключение библиотеки с сайта Google. Ну и непосредственно сам код jQuery.
Код jQuery
$(document).ready(function() {
$("a").click(function(e) {
e.preventDefault();
var id = $(this).attr("href");
var maskHeight = $(document).height();
var maskWidth = $(window).width();
$("#mask").css({"width":maskWidth,"height":maskHeight});
$("#mask").fadeIn(1000);
$("#mask").fadeTo("slow",0.8);
var winH = $(window).height();
var winW = $(window).width();
$(id).css("top", winH/2-$(id).height()/2);
$(id).css("left", winW/2-$(id).width()/2);
$(id).fadeIn(2000);
});
$(".window .close").click(function (e) {
e.preventDefault();
$("#mask, .window").hide();
});
$("#mask").click(function () {
$(this).hide();
$(".window").hide();
});
});
В статье о создание модального окна на css мы разобрали что такое модальное окно и зачем оно нужно. А так же создали окно используя только css. В этой статье я опишу как создать модальное окно javascript. А конкретнее мы будем для создания использовать библиотеку jquery.
И так начнём создавать модальное окно на jquery. Для усложнения задачи поставим такое условие. Нам нужно будет создать адаптивное модальное окно. А адаптивность будет заключаться в том, что окно при уменьшении размера экрана то же будет уменьшаться. Адаптивное модальное окно jquery начнём создавать с html разметки.
Жми здесь! X Заказать звонок
С кодом я думаю всё понятно. Имеем оболочку.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
Здравствуйте, уважаемые читатели a! Однажды я уже писал о модальных окнах, то была статья . В этой статье покажу способ создания всплывающего окна на любом сайте. Использовать будем jQuery плагин fancybox . А чтобы добавить смысловой нагрузки статье, вставим в модальное окошко форму отправки письма. Сразу хочу заметить модальные окна на этом плагине работают на всех браузерах. Приступим!
Что нам понадобится?! не так уж и много:
- библиотека jQuery;
- плагин fancybox;
- сценарий PHP для отправки сообщения.
Скачать актуальную версию плагина Вы сможете по ссылке выше. Что касается плагина fancybox , очень хороший инструмент для создания окон на веб-сайте. В окна можно включать любое содержимое видео, изображения (как по одиночке так и галереей), текст, плавающие фреймы, плагин имеет кучу настроек (о них чуть ниже) + то что он работает одинаково корректно во всех браузерах, очень радует.
Разметку не стану усложнять, просто кликаем по ссылке и открывается окно с формой отправки сообщения:
Отправить сообщение |
Где значение атрибута href совпадаем с идентификатором блока div в котором располагается форма отправки письма:
1 |
Отправить E-mail |
Добавим на форму два поля это текст сообщения и электронный адрес отправителя, а также кнопку оправки. После того как пользователь введет e-mail, текст сообщения и нажмет отправить сначала проведем проверку корректности введенной информации затем с помощью ajax запроса отправим данные в PHP сценарий.
Изначально форма скрыта:
#inline { display : none ; } |
Немного стилей для оформления полей формы и пара классов применяемых к полям при не корректном вводе данных. Когда ошибки исправлены стиль полей становится нормальным.:
1 | Txt
{
Txtarea
{
Txt
:
focus
,
Input.error,
Input.error
:
focus
,
|
Для оформления кнопки «Отправить» будем .:
1 | #send
{
#send
:
hover
{
#send
:
active
{
|
Переходим к самому интересному, к использованию плагина. Вызываем метод .fancybox в качестве селектора выступает класс ссылки:
$(document)
.ready
(function
()
{
|
Также отменяем стандартное действие формы submit (отправить), это позволит нам использовать свой собственный ajax запрос. При вызове метода я не использовал не одного параметра, оставил все значения по умолчанию. Однако о них стоит упомянуть:
Название | Описание |
padding | Отступы до содержимого в окне (По-умолчанию 15px) |
margin | Расстояние от краев браузера до окна (По-умолчанию 20px) |
width | Ширина по умолчанию для «IFRAME» и «SWF» содержимого. Кроме того, для «inline», «AJAX» и «HTML» объектов если «AutoSize» устанавливается на «false». Может быть числовым или «Auto». (По-умолчанию 800px) |
height | Высота по умолчанию для «IFRAME» и «SWF» содержимого. Кроме того, для «inline», «AJAX» и «HTML» объектов если «AutoSize» устанавливается на «false». Может быть числовым или «Auto». (По-умолчанию 600px) |
minWidth | Минимальная ширина окна (По-умолчанию 100px) |
minHeight | Минимальная высота окна (По-умолчанию 100px) |
maxWidth | Максимальная ширина окна (По-умолчанию 9999px) |
maxHeight | Максимальная высота окна (По-умолчанию 9999px) |
autoSize | Если «true», то autoHeight и autoWidth также «true» (По-умолчанию true) |
autoHeight | Если установлен «true», для «inline», «AJAX» и «HTML» содержимого высота определяется автоматически (По-умолчанию false) |
autoWidth | Если установлен «true», для «inline», «AJAX» и «HTML» содержимого ширина определяется автоматически (По-умолчанию false) |
autoResize | Если установлено «true», то размер содержимого будет изменяться вместе с изменением окна |
autoCenter | Если установлено «true», то содержимое будет по центру |
fitToView | Если установлено «true», то окно будет подстроено под размер браузера перед открытием (По-умолчанию true) |
aspectRatio | Если установлено «true», то изменение размера ограничено соотношением сторон (По-умолчанию false) |
topRatio | Вертикальное позиционирование. Если установлено 0.5 то расстояние до верха и низа окна браузера будет одинаково. Если 0 то модальное окно будет сверху (По-умолчанию 0.5) |
leftRatio | Аналогичный параметр только для горизонтального позиционирования (По-умолчанию 0.5) |
scrolling | Показывать полосы прокрутки. Может быть установлено ‘auto’, ‘yes’, ‘no’ или ‘visible’ (По-умолчанию auto) |
wrapCSS | Настраиваемый класс CSS |
arrows | Если установлено «true», то будут отображаться навигационные кнопки (По-умолчанию true) |
closeBtn | Если установлено «true», то кнопка закрыть окно будет отображаться (По-умолчанию true) |
closeClick | Если «true», то при нажатии на содержимое окно закроется (По-умолчанию false) |
nextClick | Если установлено «true», то в галерее при нажатии на содержимое будет переход к следующей картинке (По-умолчанию false) |
mouseWheel | Если «true», то галерею можно прокручивать с помощью колесика мыши (По-умолчанию true) |
autoPlay | Если «true», то при открытии первого элемента галерее начнется слайдшоу (По-умолчанию false) |
playSpeed | Скорость слайдшоу (По-умолчанию 3000 миллисекунд) |
preload | Количество картинок миниатюр под основным изображением (По-умолчанию 3) |
modal | Если «true», навигация и кнопка закрытия будет отключена (По-умолчанию false) |
loop | Если «true», то в галерее после достижения конца, начнется заново (По-умолчанию true) |
ajax | Опция для ajax запроса |
iframe | Опция для управления iframe |
swf | Опция для управления swf содержимым |
keys | Можно определить клавиши для навигации по слайдшоу |
direction | Направление навигации |
scrollOutside | Если установлено «true», то сценарий будет избегать создания полос прокрутки (По-умолчанию true) |
index | Переопределяет индекс группы начала (По-умолчанию 0) |
type | Переопределяет тип содержимого. Поддерживаемые типы «image», «inline», «AJAX», «IFRAME», «SWF» и «HTML» (По-умолчанию null) |
href | Переопределяет ссылкой источник контента (По-умолчанию null) |
content | Переопределяет содержимое, которое будет отображаться (По-умолчанию null) |
title | Переопределяет заголовок, можно установить любой HTML (По-умолчанию null) |
tpl | Объект, содержащий различные шаблоны |
openEffect / closeEffect / nextEffect / prevEffect |
Эффект анимации для действий, возможны значения ‘fade’, ‘fade’, ‘elastic’, ‘elastic’ |
openSpeed / closeSpeed / nextSpeed / prevSpeed |
Скорость анимации (По-умолчанию 250) |
openEasing / closeEasing / nextEasing / prevEasing |
Easing метод для каждого типа перехода (По-умолчанию swing) |
openOpacity/ closeOpacity |
Если установлено «true», то меняется прозрачность (По-умолчанию true) |
openMethod/ closeMethod/ nextMethod/ prevMethod |
Эффект transition может принимать значения ‘zoomIn’ / ‘zoomOut’ / ‘changeIn’ / ‘changeOut’ |
parent | Родительский элемент в контейнере. Это полезно для ASP.NET, где верхний элемент является «формой» (По-умолчанию body) |
Пользоваться данными параметрами очень просто, допустим мы хотим уменьшить отступы до содержимого контента и высоту содержимого:
1 | $(".modalbox"
)
.fancybox
({
|
Перед отправкой мы будем проверять правильность введенных данных, корректность введенного электронного адреса. Поэтому нам понадобится функция проверки. Использовать будем регулярное выражение:
1 | function
validateEmail(email)
{
|
Последний шаг — это отправка сообщения. Отслеживаем событие клик по кнопке «Отправить»:
1 | $("#send"
)
.on
("click"
,
function
()
{
|
Помещаем в первые две переменные данные, которые ввел пользователь. Определяем длину сообщения (msglen
) и проводим проверку введенного электронного адреса (mailvalid
). Далее проверяем если в переменная mailvalid
равна false
, значит электронный адрес введен неверно, и данный инпут будет подсвечен красным. Также проверяем количество введенных символов в текст сообщения, если меньше 4 символов значит показываем, что это ошибка (подсвечиваем текстовый инпут красным). $("#contact"
)
.serialize
()
,
success:
function
(data)
{
if
(data ==
"true"
)
{
$("#contact"
)
.fadeOut
("fast"
,
function
()
{
$(this
)
.before
("Успешно! Ваше сообщение отправлено:)"
)
;
setTimeout("$.fancybox.close()"
,
1000
)
;
}
)
;
}
}
}
)
;
}
}
)
;
Если оба поля проверены то вместо кнопки «отправить» показываем текст, что происходит отправка сообщения. Это дает пользователю подтверждение того, что оба поля проверены и идет процесс.
Теперь запрос AJAX. Первый параметр запроса это тип передачи данных (POST или GET). Далее указываем файл обработчик (sendmessage.php ). Следующий параметр data (данные), методом serialize подготавливаем данные в формах для отправки на сервер.
Если мы получим хороший отклик от сервера (эти данные мы формируем в пхп файле), то мы скроем контактную форму и покажем сообщение об успехе отправки. Я использую SetTimeout() , для того чтобы модальное окно закрылось не сразу а через секунду после отправки данных.
PHP сценарийМы посылаем данные, введенные пользователем с помощью JQuery в sendmessage.php . В PHP мы формируем получаем эти данные из POST массива, формируем и отправляем сообщение. Если отправка прошла успешно возвращаем обратно в JQuery true иначе false .
В переменной $sendto мы указываем адрес электронной почты на который будут приходить письма.
1 | $sendto
=
"[email protected]"
;
// Формирование заголовка письма
// Формирование тела письма
От кого: " . $usermail . " \r \n " ;$msg .= " Сообщение: " . $content . " \r \n " ;$msg .= "" ; // отправка сообщения
|
Сегодня мы разберемся с вами как делать всплывающее окно jquery, чтобы показывать скрытый контент по запросу, например чтобы показать . Сделать это достаточно просто, дочитайте до конца.
Как сделать всплывающее окно jqueryВсплывающее окно jquery состоит из таких элементов:
- фона или затемнения
- всплывающего окна
- контента всплывающего окна
Итак, как всегда, сначала приступим к верстке HTML.
Заголовок всплывающего окна X
Содержимое всплывающего окна, форма обратной связи или что-то, что вам нужно.
Готово, у нас уже есть затемнение (.popup_overlay), всплывающее окно (.popup), заголовок всплывающего окна (.popup_title), кнопка закрытия всплывающего окна (.closer), и содержимое всплывающего окна (.popup_content).
Теперь нам нужно сделать так, чтобы это всплывающее окно отображалось всплывающим, а не просто так, и чтобы затеменение перекрывало фон.
Popup_overlay{ display: none; background: rgba(0,0,0,.9); width: 100%; height: 100%; position: fixed; top: 0; left: 0; } .popup{ display: none; background: #fff; box-shadow: 0 0 10px rgba(0,0,0,1); width: 600px; height: 500px; position: fixed; top: 50%; left: 50%; margin-left: -300px; margin-top: -250px; } .popup_title{ font-weight: bold; padding: 10px; } .popup_content{ padding: 10px; border-top: 1px solid #ccc; } .closer{ float: right; cursor: pointer; }
Готово. Всплывающее окно jquery оформлено. Если заметили, у самого всплывающего окна и у затеменения стоит display: none, это сделано для того, чтобы всплывающее окно не показывалось на сайте до нужного момента. А теперь добавим отображение всплывающего окна в нужный момент (то есть по нажатию на нужную кнопку).
Всплывающее окно jquery
Ну а теперь код на jquery. Все достаточно просто. Привязывем действие на событие клика на нужную кнопку.
$(function(){ $("button").click(function(){ $(".popup,.popup_overlay").fadeIn(400); //показываем всплывающее окно }); $(".closer,.popup_overlay").click(function(){ $(".popup,.popup_overlay").fadeOut(400); //скрываем всплывающее окно }); });
Готово. Всплывающее окно будет отображаться и скрываться тогда, когда нам нужно (при нажатии на кнопку button и кнопку.closer соответственно).
Модальные окна используются, чтобы отображать дополнительный контент в новом слое страницы (окне) поверх загруженного контента. Модальные окна также называют модальными диалогами, всплывающими диалогами, всплывающими окнами, диалоговыми блоками или модальными блоками. В большинстве случаев для создания модальных окон используется jQuery.
В этой статье мы выбрали 10 лучших, по нашему мнению, плагинов jQuery для модальных окон. Мы исходили из популярности этих плагинов и сфокусировались на модальных окнах для отображения изображений и контента.
Плагины jQuery для модальных оконМодальные окна часто используются для показа галерей изображений в виде слайдшоу или дополнительной информации об элементе, или увеличенной картинки при клике на пиктограмму.
На многих веб-сайтах вы также можете найти форму входа, форму обратной связи или любой другой вид формы, загружающейся в виде модального окна. Другой вариант использования модальных окон – загрузка в нём Google Maps , чтобы пользователи могли кликнуть и указать место на карте.
Likno Web Modal Windows Builder — это не только плагин. Это мощное WYSIWYG приложение (визуальный интерфейс с множеством опций), которое даёт вам возможность создавать любые виды модальных окон jQuery . Самое потрясающее, что вам не нужно знать ничего об исходном коде. Приложение создаёт весь код за вас. Поэтому даже если вы новичок или профессиональный программист, который хочет быстро создать много проектов, Likno Web Modal Windows Builder удовлетворит все ваши потребности.
fancyBox – это плагин, который предлагает красивый и элегантный способ добавить функционал приближения для картинок, HTML и мультимедиа контента на ваши веб-страницы. Он построен на основе популярной JavaScript библиотеки jQuery и лёгок в установке и настройке.
Magnific Popup — это удобный в работе плагин jQuery lightbox , сосредоточенный на производительности. Его главная цель – обеспечить удобство работы на любом устройстве.
bPopup — это небольшой по объёму плагин jQuery для всплывающих окон. Он не позволяет вам создать или стилизовать ваше собственное всплывающее окно, зато предоставляет всю логику, например, центрирование, модальное перекрытие, события и многое другое. Плагин даёт вам много возможностей для настройки, так что он, несомненно, вам понравится.
Twitter Bootstrap modal – плагин для Twitter bootstrap . Он подойдёт для создания модальной функциональности веб-приложения (например, модальной формы) и замены базовой функциональности, предоставляемой стандартными функциями JavaScript alert(), confirm(), и prompt() .
Lightview позволяет вам легко создавать красивые всплывающие окна, используя JavaScript библиотеку jQuery .Lightview использует HTML5 , чтобы помочь вам предоставить наиболее удобные условия пользователям любых браузеров. Вы можете усовершенствовать ваш медиа-контент автоматически или создавать всплывающие окна на ваш вкус, используя мощный API на языке JavaScript .
Pop Easy — это небольшой по объёму плагин jQuery , который должен иметь каждый разработчик, чтобы легко создавать модальные окна. Он сфокусирован на важнейших элементах: добавление маски на вашу страницу и открытие всплывающего модального окна.
Небольшой по объёму плагин jQuery lightbox . Он поддерживает работу с фотографиями, группировку, слайдшоу, AJAX, inline-контент и контент, заключённый в тег iframe. Отображение контролируется посредством CSS, поэтому оно может быть полностью перепроектировано. Функциональность плагина также может быть расширена при помощи callback-функций и функций, привязанных к событиям, поэтому вам не придётся изменять исходные файлы. Colorbox принимает настройки от объекта из пар ключ/значение и может быть привязан к любому элементу HTML.
Это супер-лёгкий по объёму, супер-простой плагин jQuery для модальных диалогов.Он поддерживает плавное исчезновение и скруглённые углы. Он очень прост в установке и использовании. У него нет сложных деталей. Просто быстрое, лёгкое, но эффективное диалоговое окно.
SimpleModal — небольшой по объёму плагин jQuery , который предоставляет мощный интерфейс для разработки модальных диалоговых окон. Считайте его фреймворком для модальных диалогов. SimpleModal даёт вам гибкость в построении всего, что вы сможете себе представить, в то же время защищая вас от проблем кросс-браузерности, связанных с разработкой пользовательского интерфейса.
Мы надеемся, что вся представленная выше информация будет для вас полезной. Пожалуйста, не стесняйтесь оставлять комментарии и рассказывать нам, что вы думаете об этих плагинах, или, может быть, вы используете другой плагин, о котором мы пока не знаем.
Перевод статьи “Top 10 jQuery Plugins for Modal Windows ” был подготовлен дружной командой проекта .