Делаем красиво. Всплывающие окна
21 Июнь 2008
Итак, перед нами очередная очень распространенная задача – по клику на эскиз изображения (который фактически является ссылкой) красиво развернуть оригинальную картинку. Красиво – это в нашем случае что-то отличное от target=”_blank” и с каким-нибудь “вау-эффектом”.![]()
Все скрипты, выполняющие данную задачу принято называть лайтбоксами (lightbox). В поисках неплохих решений, мною были запытаны более двух десятков скриптов, но в результате в копилку были включены только нижеследующие.
1. Fancy box
Скрипт представляет собой плагин к jQuery.
Возможности:
- Подгоняет размеры изображений под разрешение монитора;
- Пририсовывает тень к всплывающему окошку;
- Поддерживает возможность группирования объектов и их просмотр в виде галереи в одном окне;
- Выведет для вас не только изображения, но и inline-элементы, а также HTML-контен в iframe;
- Конечно же, все это благолепие можно конфигурировать, а также экспериментировать с CSS.
Теперь о размерах, а точнее, весе скрипта (вопрос немаловажный):
- непосредственно jquery.fancybox-1.0.0.js – 12 Кб
- сам jQery (jquery-1.2.3.pack.js) – 29,1 Кб
- дополнительный скриптик jquery.pngFix.pack.js – 2,52 Кб
- CSS – около 4 Кб
- изображения – 17 Кб
Подключение и использование скрипта не представляет никакой сложности:
1. Сначала подключаем скрипты и CSS:
1 2 3 4 5 6 7 8 9 10 | /* обязательно */ <script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript" src="js/jquery.fancybox.js"></script> /* опционально */ <script type="text/javascript" src="js/jquery.pngFix.js"></script> <script type="text/javascript" src="js/jquery.metadata.js"></script> /* цепляем CSS */ <link rel="stylesheet" href="css/fancybox.css" type="text/css" media="screen"> |
2. Берем подопытную картинку:
1 | <a href="image_big.jpg"><img src="image_small.jpg" alt=""/></a> |
примечание: можете использовать атрибут title для отображения подписи к изображению, а также rel – для группировки обектов.
Заключаем картинку в какое-нибудь оформление (p, div, span – без разницы) с определенным ID. Например, так:
1 | <p id="”test1”"><a href="image_big.jpg"><img src="image_small.jpg" alt="" /></a></p> |
3. Инициализируем плагин:
1 2 3 | $(document).ready(function() { $("p#test1 a").fancybox(); }); |
Готово. В данном случае по щелчку на изображение появится всплывающее окошко с оригиналом изображения. Все параметры окна будут по умолчанию Но вы можете использовать дополнительные опции при вызове плагина, например:
1 2 3 4 5 | $(document).ready(function() { $("p#test2 a").fancybox({ 'hideOnContentClick': true }); }); |
Параметр ‘hideOnContentClick’: true – делает возможным закрытие всплывающего окна не только по нажатию на специальную кнопку, но и по щелчку на свободной области.
Со всеми возможными настройками можете ознакомиться на официальном сайте плагина, где также можно скачать архив и полюбоваться на примеры работы скрипта .
2. iBox v2
Самостоятельный скрипт, не являющийся чьим-либо плагином, и мало того, поддерживающий создание своих собственных плагинов.
По умолчанию iBox поддерживает несколько типов объектов для вывода:
- Изображения
- Документы
- Inline – контейнеры
- YouTube – видео
Если вам нужно что-то совсем необычное – можно написать свой собственный плагин к iBox, который будет реализовывать какой-нибудь оригинальный механизм обработки и вывода данных.
Принцип подключения и инициализации iBox:
- прописываем скрипты:
- производим настройку глобальных параметров скрипта:
- используем – для определения «своих» ссылок применяем не id или class элементов-контейнеров, а атрибут rel=«ibox» (или, например, ibox&target=’index.php?page=&my-js-document’ – если нужны какие-то дополнительные параметры).
В разделе «Quick Start» официального сайта приведен перечень глобальных и локальных (прописываемых непосреlственно в rel=«») опций, которые можно использовать при работе скрипта.
Теперь про особо приятные моменты:
- не смотря на богатую функциональность, скрипт весит порядка 27 Кб, что не может не радовать;
- в архиве с iBox вы найдете readme, demo-html, а также две «шкурки»;
- существует реализация скрипта в виде плагина для WordPress.
Перейти на страницу скачивания.
3. Lightbox v2.0 и Litebox
Lightbox v2.0 – работает при помощи Prototype Framework и Scriptaculous Effects Library.
Работает только с изображениями – т.е. никаких inline-объектов, iframe и прочего. Но с поставленной задачей справляется великолепно.
Использование:
1. Подключаем скрипты:
1 2 3 | <script src="js/prototype.js" type="text/javascript"></script> <script src="js/scriptaculous.js?load=effects,builder" type="text/javascript"></script> <script src="js/lightbox.js" type="text/javascript"></script> |
2. Подключаем CSS
1 | <link rel="stylesheet" href="css/lightbox.css" type="text/css" media="screen" /> |
3. Добавляем атрибут rel=”lightbox” к ссылкам.
1 | <a title="my caption" rel="lightbox" href="images/image-1.jpg">image #1</a> |
title – используется для вывода подписи к изображению. Если вам необходимо вывести галерею изображений – включите в атрибут rel название группы в квадратных скобках. Вот так:
1 2 3 | <a rel="lightbox[roadtrip]" href="images/image-1.jpg">image #1</a> <a rel="lightbox[roadtrip]" href="images/image-2.jpg">image #2</a> <a rel="lightbox[roadtrip]" href="images/image-3.jpg">image #3</a> |
И будет вам счастье ). Единственным минусом использования данного решения является необходимость использования достаточно тяжелых библиотек Prototype и Scriptaculous. Но если в вашем проекте уже используется Prototype – не стоит даже задумываться ).
Litebox – маленькая, аккуратная модификация Lightbox v2.0, работающая с использованием облегченной версии Prototype (урезана до 4 Кб) . Общий вес скриптов составляет всего 24,2 Кб. Выглядит и работает не хуже своего старшего брата. ) Советую обратить внимание. Скачать архив.
4. ThickBox 3.1
Достаточно мощный скрипт, построенный на базе библиотеки jQuery. ThickBox можно использовать для:
- показа одиночного изображения или группы картинок;
- отображения inline-объектов;
- отображения контента в iframe;
- создания модальных диалоговых окон и отображения результатов ajax-запросов внутри всплывающего окна.
Использование:
1. подключаем скрипты:
1 2 | <script src="path-to-file/jquery.js" type="text/javascript"></script> <script src="path-to-file/thickbox.js" type="text/javascript"></script> |
2. подключаем CSS
1 | <link rel="stylesheet" href="path-to-file/thickbox.css" type="text/css" media="screen" /> |
3. в зависимости от типа выводимых объектов руководствуемся теми или иными правилами (которые подробно описаны на официальной страничке скрипта).
Коротко о синтаксисе вывода изображений:
а. вывод одиночного изображения
1 | <a class="thickbox" title="здесь_заголовок" href="images/single.jpg"><img src="images/single_t.jpg" alt="Single Image" /></a> |
b. галерея изображений:
1 2 3 | <a class="thickbox" title=" здесь_заголовок " rel="gallery-plants" href="images/plant1.jpg"><img src="images/plant1_t.jpg" alt="Plant 1" /></a> <a class="thickbox" title=" здесь_заголовок " rel="gallery-plants" href="images/plant2.jpg"><img src="images/plant2_t.jpg" alt="Plant 2" /></a> <a class="thickbox" title=" здесь_заголовок " rel="gallery-plants" href="images/plant3.jpg"><img src="images/plant3_t.jpg" alt="Plant 3" /></a> |
Для группировки изображений используется атрибут rel=”gallery-plants”
Итак, нам потребуется:
- библиотека jQuery (31 Кб)
- thickbox.js (12 Кб) или thickbox-compressed.js (6 Кб)
- ThickBox.css (4 Кб) и картинка-анимация loadingAnimation.gif (5,74 Кб)
И всё.) Море удовольствия весом в 45 Кб.
5.1 Плагины к Motools: ReMooz и SqueezeBox
Некоторая информация относительно SqueezeBox содержится вот в этой статье. В заметке рассмотрен пример реализации одной из возможностей плагина – осуществление ajax-запроса и вывод результата в iframe.
Вцелом, ReMooz и SqueezeBox очень похожи и являются детищами одного и того же автора (Harald Kirschner).
Разработчик позиционирует ReMooz как скрипт, идеально подходящий для создания pop-up окошек с картинками, а SqueezeBox – инструмент более широкого профиля. В выше упомянутой статье вы найдете описание возможностей SqueezeBox и требований к его использованию, а сейчас рассмотрим ReMooz.
Как вещает автор данного творения – этот плагин рекомендуется использовать при создании лайтбоксов с изображениями. Скрипт позволяет не просто выводить оригинал изображения, но и настраивать вывод: так, например, мы можем определить, какой процент от размера экрана может занимать выводимая картинка (при необходимости ReMooz уменьшит ее размеры ), добавлять ли к ней прозрачность и нужно ли рисовать тень. За подробностями о настройках плагина – на офсайт, там же – примеры и интструкция к использованию. А если в двух словах, то для работы с ReMooz нам понадобиться:
1. MooTools JavaScript Framework (обязательно 1.2 версии) со следующими включенными методами:
- Element.Dimensions
- Fx.Tween
- Fx.Morph
- Selectors
- DomReady (facultative)
2. ReMooz.js
3. ReMooz.css
4. несколько изображений, участвующих в оформлении всплывающего окошка (найдете на странице описания)
Итого: получаем примерно 55 Кб скриптов и чуть-чуть картинок.
Далее, нам нужно подцепить скрипты и CSS.
После этого заключаем изображения в какой-нибудь подходящий элемент с заданным ID или CLASS:
1 2 3 | <div id="demo-photos"><a title="заголовок" href="оригинальное изображение.jpg"> <img src="эскиз.jpg" alt="" /> </a></div> |
Теперь прописываем примерно такой обработчик:
1 2 3 4 5 6 7 8 9 10 11 | window.addEvent('load', function() { /** * Этот вариант является вариантом по умолчанию. Никаких дополнительных настроек */ ReMooz.assign('#demo-photos a', { origin: 'img' }); }); |
Или так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | window.addEvent('load', function() { /** * А это уже посложнее */ ReMooz.assign('#demo-photos a', { 'origin': 'img', 'shadow': 'onOpenEnd', // когда у нас должна появляться тень – прорисовка может происходить одновременно с загрузкой или же после нее 'resizeFactor': 0.8, // занять максимум 80% экрана 'cutOut': false, // не скрывать эскиз изображения при просмотре оригинала 'opacityResize': 0.4, // прозрачность 'dragging': false, // запретить перетаскивание окошка 'centered': true // окошко будет появляться в центре экрана, не зависимо от параметров элемента-конейнера }); }); |
Плагин готов к употреблению ).
5.2 Плагины к Motools: Multibox и Lightbox.
Данные два решения также являются творением одного автора. И опять-таки, одно из них (Lightbox) – «заточено» под вывод графической информации, а второе (Multibox) – призвано обеспечить работу с широким набором данных. Оба скрипта работают на базе Motools 1.11.
Lightbox не имеет каких-либо особенностей. Подхватывает картинки по rel=”lightbox”, а группы картинок по rel=”lightbox[название_группы]”. Инициализируется заклинанием типа:
Lightbox.init({descriptions: ‘.lightboxDesc’)
Имеет дополнительные настройки, с которыми можно ознакомиться на официальной страничке.
Multibox – более функциональный скрипт, работающий не только с изображениями, но и с flash, видео, mp3, html.
Механизм использования несколько отличается от Lightbox – ссылки для обработки определяются на основании CLASS-а контейнера, в котором они содержаться, а атрибут rel – используется для задания дополнительных параметров.
МОРАЛЬ: каждое из рассмотренных решений имеет право на существование. Что именно использовать – зависит от предпочтений разработчика и от конкретной ситуации использования. Например, если в проекте уже используется какая-либо ajax-библиотека, то логично и целесообразно было бы для решения задачи со всплывающими окнами использовать плагин именно для этой библиотеки.
Надеюсь, что данная статья поможет определиться с выбором подходящего решения.
Также жду ваших комментариев и сообщений (возможно, даже заметок) об интересных скриптах всплывающих окон.





3 года назад
Ни в одной галерее для J 1.5 этих эффектов нет. Можно добавить этот _http://vikjavev.no/highslide/ тоже классно.
3 года назад
Предлагаю идею выпустить электронный сборник по вашему блогу? Можно все полезные статьи скомпилировать в pdf и предоставлять возможность скачивать?! По-моему очень полезно!
3 года назад
ThickBox 3.1 мне больше всего понравился, использую его. А вообще, полезный обзор.
3 года назад
Здравствуйте! Интересная подборка. Использую Lightbox v2.0. Да, Вы правы, справляется он отлично, очень быстро работает.
У меня просьба, подскажите, пожалуйста плагин, или скрипт для изображений с возможностью ставить отметки (типа “отметь друга”) на фото, как на сайте “Вконтакте”.
2 года назад
очень полезные советы,особенно для новичков,я не раз встречал Всплывающие окна на разных сайтах.Но не где не мог найти где подробно описано как это делать.
2 года назад
Очень здорово, спасибо автору. использовал раньше Lightbox v2.0 но там как Вы сами написали “никаких inline” Поэтому стал пытаться изучать jQuery. Только я нигде не могу найти мануал на русском по всем возможностям jQuery. Если есть у кого линк, киньте пожалуйста.
2 года назад
Скажите, а будет ли индексироваться поисковиками текст внутри всплывающего окна?
2 года назад
да будет… только с оговоркой.
Дело в том что текст всплывающего окна находится в коде страницы с которой оно вызывается. просто этот текст скрыт до того момента пока не кликнешь по ссылке и не вызовешь окно. Поэтому когда пользователь зайдёт к вам с поисковика то текст этот не увидит (а поисковик его увидел потому что он смотрит код страницы) пока не вызовет нужное окошко.
2 года назад
кавычек слишком много =) не будет работать, если не убрать =)
2 года назад
D503, не знаю, честно говоря, не смотрел даже. Я просто на этом блоге нашёл необходимые библиотеки а разбирался я по документации, чего и всем советую
2 года назад
Столкнулась с задачей запустить окно с фоткой с эффектом Lightbox из flash объекта. Кто-нибудь знает как правильно написать ссылку на Flash-8
2 года назад
При установке ThickBox 3.1 столкнулся с проблемой его неработоспособности. Т.е. на локальной машине все работало замечательно, а вот на хостинге не работало совсем. В последствии выяснил, что мешали заглавные буквы в имени файла ThickBox.css…
Обзываем его thickbox.css, и все работает :)
З.Ы. Вдруг кто сталкнется…
2 года назад
Я столкнулся с другой проблемой..
thickbox
Хотел уменьшить кол-во кода отображаемого через окончательную обработку данных через JS, но если у меня тут s(id, name, size);, то ничего не выводится(..
2 года назад
2 Ирина:
Посмотрите, как эта связка реализована здесь (http://www.flshow.net/carousel/lightbox/)
2 года назад
По теме iBox v2 если у кого возникнет подобная проблема:
С кодировками. Сам скрипт в UTF-8, это и естественно, а результирующие странички мной были сделаны по старой памяти в win1251
Выходило кракозябликами. Решение – сами страницы прописывать тоже в utf.
Ещё: чтобы избавиться от слова loading при загрузке окна, внесите соответствующие изменения в строку 544 файла ibox.js
То же самое в отношении кнопки Close – строка 10 того же файла.
Сохранял без BOM
Спасибо за страничку, очень помогла
1 год назад
Столкнулся с тем, что на одной странице в Джумале почему то скрипты не ладят, точнее, если например на главной бегущая строка, то форма поиска searh – на ajaks перестает работать, то же со скриптами jquery. Может кто знает как с этим бороться?
1 год назад
mootools (который используется в “полторашке”) конфликтует с ajaks/jquery?
“Мирить” их, либо отказываться от чего-то… И искать другой вариант.
1 год назад
Приятный сайт и очень полезный – доступно понятно; Спасибо!
1 год назад
$(document).ready(function() {
$(“p#test1 a”).fancybox();
});
Подскажите, пожалуйста: при инициализации плагина прописано имя картинки test1.
$(“p#test1 a”).fancybox()
А что нужно прописывать для картинок вообще?
1 год назад
Не работает в Opera и в IE, в мазиле все прекрасно. Как сделать этот скрипт работоспособным в IE, Opera ?
11 месяцев назад
Очень пригодилось. Большое спасибо за описание методов!
9 месяцев назад
как вставить код в php?
1 месяц назад
Магазин профессиональной спортивной одежды в Ростове-на-Дону.
Термобелье. Товары для туризма и спорта. Лыжи, маски, сноуборды. http://www.sportyga.ru
1 месяц назад
It’s ok that I will share it my Facebook page?
My name is Sting Lon
1 месяц назад
Search machine optimization (SEO) is the activity of improving the visibility of a website or a net page in search engines via the “expected” or un-paid (“fundamental” or “algorithmic”) search results. In inexact, the earlier (or higher ranked on the search results page), and more frequently a orientation appears in the search results list, the more visitors it last will and testament draw from the search engine’s users. SEO may quarry extraordinary kinds of search, including image search, neighbouring search, video search, academic search,[1] scoop search and industry-specific vertical search engines.
As an Internet marketing scenario, SEO considers how search engines whip into shape, what people search for, the verified search terms typed into search engines and which search engines are preferred past their targeted audience. Optimizing a website may subsume editing its satisfied and HTML and associated coding to both better its applicableness to particular keywords and to get rid of barriers to the indexing activities of search engines. Promoting a instal to developing the number of backlinks, or inbound links, is another SEO tactic.
The acronym “SEOs” can refer to “search engine optimizers,” a phrase adopted by way of an dynamism of consultants who uphold not at home optimization projects on behalf of clients, and not later than employees who carry on SEO services in-house. Search appliance optimizers may tender SEO as a stand-alone service or as a large of a broader marketing campaign. Because effective SEO may instruct changes to the HTML author cypher of a purlieus and milieu capacity, SEO tactics may be incorporated into website advance and design. The clauses “search motor friendly” may be used to paint website designs, menus, pleasure superintendence systems, images, videos, shopping carts, and other elements that contain been optimized in the interest of the long of search motor exposure.
seo la gi
1 месяц назад
Mos Craciun vine
la tine unde vrei tu.
Fa o surpriza extraordinara copilor.
Suna si adu-l pe Mos Craciun la numarul +40725662316.
Intra in acest moment pe http://www.moscraciundeinchiriat.com
1 месяц назад
Люди!!! Я нашла уникальный метод, с помощью которого я полностью излечила своего мужа от АЛКОГОЛИЗМА (!) История моя длинная, не стану тут её полностью описывать, а кому интересно – добро пожаловать на мою страницу, где я всё подробно рассказываю: http://t1234.ru/index-nat.htm !
4 недели назад
Welcome to VPNGlobe .com
EBOX OPENVPN
With the ebox openvpn, you can be 1005 sure that your connection is secure and there is no danger of it being compromised.
http://vpnglobe.com/plans.html
3 недели назад
Packers fan,Gear up to show your support for Aaron Rodgers and the Packers with this Aaron Rodgers Authentic NFL Jersey by Reebok NFL Equipment. ThisGreen Bay Packers Aaron Rodgers Green Team Color 2011 Super Bowl XLV Authentic NFL Jersey is the official on field authentic NFL Jersey by Reebok!
? Body: 100% 6-oz polyester pro brite
? Sleeves/Yoke: 100% 6-oz polyester metallic plus dazzle
? Collar/Cuffs/Sleeve Inserts: 100% 10-oz polyester rib knit
? Engineered and constructed to replicate the game-day Pro Cut jersey in fabric, trims, Packers logos
? NFL Equipment patch sewn on the bottom of front collar or fabric insert
? NFL Equipment jock tag with numeric sizing is applied above left hem
? Machine wash cold, hang to dry
? Officially licensed
3 недели назад
Продаем увлажняющие перчатки, носки, шарфы.
Доставка по всей России наложным платежом.
Цена 600 рублей пара.