FancyBox как модальные окна | Блог Селькина Виталия
FancyBox как модальные окна | Блог Селькина Виталия

FancyBox как модальные окна

Рубрика: JavaScript

Просмотров: 13351

Вчера я получил комментарий к записи LightWindow от читателя Юрия. Суть его просьбы состояла в том, чтобы вместо изображения получить форму в модальном окне. Первоначально я пытался адаптировать скрипт под любой другой контент, потом понял, что это пустая трата времени, ведь велосипед уже изобретён, и рационально будет, если этой возможностью мы воспользуемся.

Скрипт FancyBox как модальные окна

Решение было найдено всё в том же FancyBox, если раньше мы использовали его в качестве галереи, то теперь - в качестве модальных окон. Статью разбил на два этапа: во-первых, основная настройка FancyBox, во-вторых, заточка под форму. Ладно, меньше слов - больше дела.

Модальные окна FancyBox в действииСкачать модальные окна FancyBox

Настройка FancyBox

Шаг №1

Подключаем JS-скрипты, находящиеся в папке js, и таблицу стилей style.css:

<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="js/jquery.easing.1.3.js"></script>
<script type="text/javascript" src="js/jquery.fancybox-1.2.1.js"></script>
<script type="text/javascript" src="js/jquery.fancybox-1.2.1.pack.js"></script>
<link href="style.css" rel="stylesheet" type="text/css"/>

Шаг №2

Вставляем jQuery-код, настройки которого влияют на внешний вид модального окна. Каждая строка прокомментирована, поэтому проблем не возникнет.

<script type="text/javascript">
$(document).ready(function() {
$("a.gallery, a.iframe").fancybox();
$("a.modalbox").fancybox(
{ 
"frameWidth" : 400, 
"frameHeight" : 400 
});
$("a.gallery2").fancybox(
{ 
"padding" : 20, // отступ контента от краев окна
"imageScale" : false, // Принимает значение true - контент(изображения) масштабируется по размеру окна, или false - окно вытягивается по размеру контента. По умолчанию - TRUE
"zoomOpacity" : false,	// изменение прозрачности контента во время анимации (по умолчанию false)
"zoomSpeedIn" : 1000,	// скорость анимации в мс при увеличении фото (по умолчанию 0)
"zoomSpeedOut" : 1000,	// скорость анимации в мс при уменьшении фото (по умолчанию 0)
"zoomSpeedChange" : 1000, // скорость анимации в мс при смене фото (по умолчанию 0)
"frameWidth" : 700,	 // ширина окна, px (425px - по умолчанию)
"frameHeight" : 600, // высота окна, px(355px - по умолчанию)
"overlayShow" : true, // если true затеняят страницу под всплывающим окном. (по умолчанию true). Цвет задается в jquery.fancybox.css - div#fancy_overlay 
"overlayOpacity" : 0.8,	 // Прозрачность затенения 	(0.3 по умолчанию)
"hideOnContentClick" :false, // Если TRUE  закрывает окно по клику по любой его точке (кроме элементов навигации). Поумолчанию TRUE 
"centerOnScroll" : false // Если TRUE окно центрируется на экране, когда пользователь прокручивает страницу 

}); 
$("#menu a, .anim").hover( function() {
$(this).animate({"paddingLeft" : "10px"}, 300)},
function() {$(this).animate({"paddingLeft" : "0"}, 300);
});
$("a.iframe").fancybox(
{ 
"frameWidth" : 800,	 // ширина окна, px (425px - по умолчанию)
"frameHeight" : 600 // высота окна, px(355px - по умолчанию) 
});
});
</script>

Шаг №3

Прописываем две ссылки: одна будет вести на страницу с обычным текстом, а вторая - на форму, и добавляем каждой класс gallery2. Если не надо открывать страницу в модальном окне, то класс не прописываем:

<p><a class="gallery2" href="text.html">Текст в модальном окне</a></p>
<p><a class="gallery2" href="form.html">Форма в модальном окне</a></p>

После этого создаём страницу text.html и вставляем в нею произвольный текст. Общая настройка на этом готова.

Форма в модальном окне FancyBox

Шаг №1

Основная работа уже проделана, осталось лишь создать файл form.html, который будет содержать HTML-код формы.

<form class="forms" method="post" name="form" action="file.php">
<p>Имя:<br/><input name="name" size="40" type="text"/></p> <p>Фамилия:<br/><input name="nickname" size="40" type="text"/></p> <p>Текст:<br/><textarea name="text" cols="50" rows="20"></textarea></p> <input name="submit" class="button" type="submit"/>
</form>

Тем, кто не знает, что такое формы, советую ознакомиться с их построением.

Шаг №2

Теперь придадим форме немного стилей. Для этого поместите следующий код в style.css:

.forms {
font:14px Georgia;
color:#333333;
margin-left:130px;
}
.forms input,textarea {
border:1px solid #cccccc;
background-color:#f6f6f6;
padding-left:8px;
}
.forms .button {
background-color: #dee0ff;
width:100px;
height:30px;
font: bold 14px Arial;
color:#999999;
}

Примечание

В последнее время замечаю, что у многих возникают проблемы по установке данных скриптов. Всё делов в директориях, то есть у меня изображения для FancyBox находятся в папке images/fancybox/, у вас могут находиться и вовсе в другом месте, аналогично и с JS-фреймворками. Поэтому если у вас появились проблемы, сразу же открывайте каждый файл и тщательно анализируйте пути, которые прописаны в файлах.

Комментарии:

Добавил: Стас (30-Jan 2012 1:15:46)

Добрый день! подскажите как сделать чтобы ссылка была картинкой, просто когда я в этот код <p><a class="gallery2" href="text.html">Текст в модальном окне</a></p> добавляю вместо текста <img и ссылку на картинку то при нажатии на картинку модальное окно не открывается

Добавил: M.A.S.O.L (10-Dec 2011 18:51:48)

Клевый урок!!!

Добавил: Aice (14-Feb 2011 15:51:18)

Здравствуйте. сделал модальное окно... но кодировка не совпадает с русской????? искал искал - не могу сделать с русской кодировкой.... Помогите , что надо сделать чтобы кодировка была русской в всплывающем окне... плииз..

Добавил: Max (10-Jan 2011 17:56:12)

зачем подключать и jquery.fancybox-1.2.1.js, и jquery.fancybox-1.2.1.pack.js ??

Добавил: Павел (14-Oct 2010 18:23:08)

Еще вопрос. После вызова формы ввода на своей страницы, у меня все вызовы типа <a> стали выводить странице в отдельном окне. Как этого избежать?

Добавил: Павел (14-Oct 2010 17:21:07)

Добрый день. У меня проблема с кодировкой текста в форме. Код файла form.html в вашем примере выглядит вот так: <form class="forms" method="post" name="form" action="file.php"> <p>Р_Р_С_:<br/><input name="name" size="40" type="text"/></p> <p>ФаР_РёР>РёС_:<br/><input name="nickname" size="40" type="text"/></p> <p>РўРчРєС_С':<br/><textarea name="text" cols="50" rows="20"></textarea></p> <input name="submit" class="button" type="submit"/> </form> Это, если просматиривать его far-ом. Соответственно, если я делаю сам подобный файл в кодировке win1251, то браузер мне показывает вместо русской кодировки нечитаемый текст.

Добавил: Dzholi (22-Aug 2010 23:23:48)

Спасибо огромное за урок!Но,если не сложно,напишите пожалуйста как заставить его работать.Какие плагины прикрутить?

Добавил: Shanga (09-Aug 2010 19:36:28)

Спасибо за статью, выручила!!!

Добавил: Владимир (03-Jul 2010 18:58:13)

Здравствуйте :) У меня проблема такого рода. Всплывающие окно прячется под верхнее меню. Как сделать чтоб окно было поверх меню, а не под ним? Вот пример http://dominat-ua.com//images/pmm.jpg

Добавил: Владимир (03-Jul 2010 18:56:25)

Здравствуйте :) У меня проблема такого рода. Всплывающие окно прячется под верхнее меню. Как сделать чтоб окно было поверх меню, а не под ним? Вот пример http://dominat-ua.com//images/pmm.jpg


Добавление комментария:

Имя *:

Email:

Текст *:

Символы на картинке *:

RSS-подписка
RSS-подписка на статьи по основам сайтостроения RSS-подписка на полезные уроки по web-языкам
Разделы статьй
Каталог товаров
Разделы уроков
Последние статьи
Последние уроки