Постоянно обновляющаяся база плагинов jQuery для фото, видео и медиа галерей Инструменты для создания красивых изображений с помощью CSS фильтров. Адаптивная галерея изображений Скрипт галереи с миниатюрами

  • 20.09.2022

Долго выбирал тему для сегодняшнего топика. В итоге заметил, что мы еще не делали подборок с галереями изображений . По моему отличная тема, так как галереи присутствуют у множества сайтов. Откровенно говоря, все они не очень привлекательны. Учитывая нынешние тенденции развития jquery, html5 и т. д. я подумал, ведь должны быть уже намного привлекательней решения чем те, которые встречались мне раньше. Итак. Потратив день, удалось найти огромнейшее количество скриптов. Из всей этой горы я решил отобрать только , ведь я люблю , как вы уже заметили по предыдущим постам.
Галерея изображений применима не только в случае с фотоальбомами . Скрипт можно использовать, думаю, что это даже правильней будет, в качестве портфолио для фотографов, дизайнеров и т. д. Jquery эффекты помогут привлечь внимание посетителей и просто придадут изящности вашему сайту.
Итак. К вашему вниманию коллекция jquery плагинов галерей изображений для сайта .
Не забываем комментировать и помните, чтоб не потерять эту подборку, вы можете добавить ее в избранное, нажав на звездочку внизу статьи.

PHOTOBOXБесплатная, легкая, адаптивная галерея изображений , в которой все эффекты, переходы сделаны средствами css3. Идеальна для создания сайта-потрфолио фотографа.

S GalleryПривлекательный Jquery плагин галереи изображений . Анимация работает с помощью css3.

DIAMONDS.JSОригинальный плагин для создания галереи изображений . Миниатюры имеют форму ромба , что в данный момент очень популярно. Такая форма сделана с помощью css3. Единственный минус этой галереи - это отсутствие лайтбокса, в котором бы открывалось фото в полный размер. То есть потребуется раками прикрутить плагин лайтбокса. Данный скрипт формирует адаптивную сетку изображений в форме ромба.

SuperboxСовременная галерея изображений с использованием Jquery, css3 и html5 . Мы все привыкли, что при клике на превью полное изображение открывается в лайтбоксе (всплывающем окне). Разработчики данного плагина решили, что лайтбокс уже отжил свое. Изображения в этой галереи открываются ниже превью. Посмотрите демо и убедитесь, что такое решение выглядит на много современней.
| Smooth Diagonal Fade GalleryСовременная галерея изображений в которой превью распределяются по всему пространству экрана . Скрипт умеет сканировать папку с фото на сервере, то есть не нужно вставлять каждое изображение по отдельности. Достаточно загрузить картинки в папку на сервере и в настройках указать путь к директории. Далее скрипт все сделает сам.

Gamma GalleryСтильная, легкая, адаптивная галерея изображений с сеткой в стиле Pinterest , которая сейчас стала очень популярна. Скрипт отлично работает как на стационарных компьютерах, так и на мобильных устройствах с любым разрешением экрана. Отличное решение для создания портфолио веб-дизайнера.

THUMBNAIL GRID WITH EXPANDING PREVIEWПлагин представляет собой адаптивную сетку изображений . При клике ниже выводится фото побольше и описание. Хорошо подойдет для создание портфолио.

jGalleryjGallery - это полноэкранная, адаптивная галерея изображений . Легко настраиваются эффекты, переходы и даже стиль.

Glisse.jsПростой, но очень эффектный плагин галереи изображений. Это именно то решение, когда нужно создать фотоальбом. Плагин поддерживает альбомы и имеет очень классный эффект перелистывания.

Mosaic FlowПростая, адаптивная галерея изображений с сеткой в стиле Pinterest .

GalereyaЕще одна стильная галерея с сеткой в стиле Pinterest с фильтром по категориям. Работает в браузерах: Chrome, Safari, Firefox, Opera, IE7+, Android browser, Chrome mobile, Firefox mobile.

least.jsОтличная бесплатная галерея изображений с использованием JQUERY, 5 и CSS3. Она имеет очень привлекательный внешний вид и, несомненно, привлечет внимание ваших посетителей.

flipLightBoxПростенькая галерея изображений. При клике на превью, в лайтбоксе открывается полное изображение.

blueimp GalleryГибкая галерея. Способна выводить в модальном окне не только изображения, но и видео . Отлично работает на сенсорных устройствах. Легко кастомизируется и есть возможность расширения функционала с помощью дополнительных плагинов (См. следующий плагин).

Всем привет! Сегодня мы поговорим о возможно лучшей бесплатной фотогалереи, видео и фото слайдере, поговорим о "фотораме". Несмотря на то, что скрипт уже года 2 не поддерживается и автор переключился на проект схожей тематики он прекрасно работает и продолжает радовать глаз.

Основные плюсы (+)

  • Простота установки, настройки и использования. Кроме jQuery, вам понадобится подключить всего 2 файла , а для вывода галереи там нужно указать только ссылки на картинки.
  • Незначительно влияет на скорость загрузки сайта.
  • Адаптивность . Ваша галерея выглядит хорошо и на телефоне, и на ноутбуке, и даже на экране телевизора.
  • Обилие настроек и функций, подключаемых отдельно, через атрибуты HTML тегов.
  • Поддержка сенсорных устройств.
  • Поддержка видео .
  • Возможность ленивой загрузки картинок.
  • И много-много всего другого, что придётся по душе искушённому пользователю.
  • Минусы (-)

  • Отсутствие поддержки пользователей. Вероятность того, что вашу проблему рассмотрят или исправят практически равна нулю. Да это плохо, но не фатально.
  • Первый вариант подключения Fotorama

    Это вариант подключения самый простой, но не самый лучший, его стоит использовать только при условии, что вам нужно выводить галерею на большинстве страниц сайта. Плюсом варианта является использование CDN.

  • Проверяем наличие jQuery. Зайдите в исходный код сайта (сочетание клавиш Ctrl + U) → пытаемся найти примерно такую строчку: https://ajax.googleapis.com/ajax/libs/jquery/X.X.X/jquery.min.js

    Для облегчения поиска используйте Ctrl + F . Если заветной строки нет, то вам придётся подключить jQuery. На WordPress это можно сделать вставив код, расположенный ниже, в файл функций темы (functions.php). На самом деле этот скрипт используется при конфликтах разных версий jQuery и действует он по такой схеме: удаляет зарегистрированный ранее jQuery, регистрирует новый, выводит скрипт. Актуальные версии библиотеки jQuery можно найти тут .

    Можно просто вставить такую строку между и :

  • Подключаем fotorama.css и fotorama.js. Вставьте следующий код между тегами и , на WordPress это делается в файле заголовка темы (header.php).
  • На этом подключение галереи первым способом окончено. Как использовать написано в разделе "Непосредственно создание галереи".
  • Второй вариант подключения [шорткод + Autoptimize]

    В этом варианте подключения файлы скрипта будут выводиться только на нужных страницах через [шорткод ]. А если вы используете плагин Autoptimize, то код скрипта в придачу интегрироваться в файлы темы. Эти нехитрые манипуляции должны увеличить скорость загрузки сайта.

  • Проверяем наличие jQuery. Так же как и в первом варианте, смотрите выше.
  • Скачиваем файлы фоторамы → распаковываем → загружаем в отдельную папку в корне сайта.
  • Для создания шорткода в файл функций темы (functions.php) вставляем код, расположенный ниже, изменяем ссылки к файлам на свои..js"> "; } add_shortcode("foto","sd");
  • Теперь при написании статьи в конце вводите шорткод
  • Непосредственно создание галереи

    Галерея выводится HTML кодом с помощью контейнера c class="fotorama" , в контейнере размещаются код вывода изображения либо ссылка на изображение . При написании статьи на движке WordPress переключите редактор в текстовый режим и введите контейнер c class="fotorama" .

    Выглядит это так:

    Или так (нумерация ссылок необязательна):

    1 3 4

    Примеры настроек FotoramaРазмеры контейнера

    Размеры блока фоторамы является размер первого изображения, другие картинки масштабируются пропорционально первой. Для исправления этой ситуации можно указать размеры вручную.

    Существуют и другие настройки:

    Data-width="98%" //относительная ширина data-ratio="800/600" //соотношение сторон data-minwidth="420" // мин. ширину data-maxwidth="900" // макс. ширину data-minheight="320" // мин. высота data-maxheight="100% // относительная макс. высота data-height="100% // относительная высота

    Миниатюры

    За миниатюры отвечает data-nav="thumbs"

    Но такой способ не очень эффективен, так как скрипту приходится загружать сразу все фотографии для генерации миниатюр, поэтому будет рациональнее заранее подготовить маленькие копии картинок. WordPress автоматически делает миниатюры, мы их и будем использовать. Чтобы получить ссылку на миниатюру добавьте -70x70 к названию файла (https://сайт/wp-content/uploads/2017/11/27ltl9eRXk.jpg → https://сайт/wp-content/uploads/2017/11/27ltl9eRXk-70x70.jpg).

    По умолчанию миниатюра - 64 × 64. Откорректировать этот параметр можно с помощью data-thumbwidth (ширина) и data-thumbheight (высота). Если вам нужно чтобы миниатюра имела свой собственный размер, то задайте параметры width и height для файла миниатюры:

    HTML-код + Fotorama

    Фоторама отлично обрабатывает HTML и CSS, что значительно расширяет функционал скрипта. Работайте со ссылками, блоками, таблицами, абзацами, пишите CSS и многое другое. Ниже представлены некоторые примеры работы галереи. Если визуальная часть не отображается, то нажмите кнопку "Result".

    Показать / Скрыть примеры

    See the Pen ooppwb by Ivanov Klim (@DreamerKlim) on CodePen.

    See the Pen aVEEVb by Ivanov Klim (@DreamerKlim) on CodePen.

    Полноэкранный режим data-allowfullscreen="true" //в окне браузера data-allowfullscreen="native" //на весь монитор

    Существует возможность добавить отдельное большое изображение для полноэкранного режима через data-full:

    Другое data-autoplay ="true" //автозапуск data-autoplay="3000" //интервал между слайдами в мс data-caption ="One" //комментарии к картинкам data-keyboard ="true" //навигация стрелками data-shuffle ="true" //изображения в разнобой data-navposition ="top" //миниатюры вверху data-loop ="true" //циклическая прокрутка Попробуем все соединить и добавить видео "какой-то коммент 1" > "какой-то коммент 2" > To find work you love

    Много раз делал обзоры различных галерей изображений, собрал обширную коллекцию эффектных слайд-шоу и -плагинов. Есть в копилке и Lighbox исключительно на CSS3, без подключения дополнительных js-библиотек. Но время не стоит на месте, пользователи всё чаще используют для сёрфинга интернета различные мобильные устройства, а значит адаптивность веб-элементов и в частности фото-галерей с эффектом « » становится одним из приоритетов, на который веб-дизайнерам и разработчикам стоит обращать внимание.

    Представляю очередную подборку из 15 адаптивных jQuery плагинов , которые дружат, как с десктопными браузерами, так и отлично вписываются в экраны различных мобильных устройств (ноутбуки, смартфоны, планшеты и т.д.).

    Смотрите демо на сайтах разработчиков, скачивайте понравившийся плагин и творите, творите, творите...

    1. iLightbox

    iLighbox — это лёгкий Лайтбокс-плагин jQuery с поддержкой широкого диапазона различных типов файлов: изображения, видео, Flash / SWF, содержание Ajax, фреймы и встроенные карты. Этот плагин также добавляет кнопки социальных сетей, что позволяет пользователям обмениваться контентом через Facebook, Twitter или Reddit. Отличная возможность организации эффектных слайд-шоу, галерей изображений и видео-роликов, с просмотром в обычном, и полноэкранном режимах.

    iLighbox работает довольно шустро и при просмотре на мобильных устройствах, более чем корректно отображает обрабатываемый контент. Кроме всего прочего, используя этот плагин, вы легко сможете реализовать вывод информационных блоков по типу модального окна.

    • Зависимость : jQuery
    • Поддержка браузерами : IE7+, Chrome, Firefox, Safari и Opera
    • Лицензия : А чёрт её знает)))
    2. SwipeBox

    Swipebox — это плагин JQuery с поддержкой сенсорных экранов мобильных платформ. Помимо изображений плагин поддерживает встраиваемое видео с Youtube и Vimeo. Swipebox очень просто прикрутить к любому проекту, плагин имеет несколько интуитивно-понятных опций для настройки его функционал и поведения. На сайте разработчика подробнейшая документация по подключению и использованию плагина, без лишней воды всё только по делу, так что разобраться что, куда, и зачем, думаю будет не сложно.

    • Зависимость : jQuery
    • Поддержка браузерами : IE9+, Chrome, Safari, Firefox, Opera, IOS4+, Android и Windows Phone
    • Лицензия : Не определил, может вам повезёт)))

    3. MagnificPopup

    Давно известный и хорошо себя зарекомендовавший лайтбокс-плагин на jQuery или Zepto.js. Автор плагина — Дмитрий Семенов, являющийся разработчиком и плагина PhotoSwipe, о котором расскажу чуть ниже. Поставляется в виде плагина jQuery/Zepto, имеет более широкие возможности отсутствующие в PhotoSwipe, такие как поддержка видео, отображение карт и Ajax содержания, реализация модальных окон с встроенными формами. По всем критериям, это ещё один замечательный инструмент в обойме веб-разработчика. Отдельно имеется плагин для WordPress и подробнейшая документация по настройке, и использованию. Удручает только отсутствие документации на Русском, судя по имени и фамилии автор вроде бы Русский, никогда не понимал из-за вредности это, или же из-за мнимого осознания своей навороченности, да мля. Ну да ладно, кому оно надо разберётся, мы тоже чай не всмятку сварены))).

    • Зависимость : jQuery 1.9.1+, или Zepto.js
    • Поддержка браузерами : IE7 (partially), IE8+, Chrome, Firefox, Safari и Opera
    • Лицензия : MIT license

    4. PhotoSwipe
    • Зависимость : Javascript или jQuery
    • Поддержка браузерами
    • Лицензия : MIT license

    11. FeatherLight

    6 к.битный lightbox-плагин, для более-менее подкованных разработчиков, снаряжен всеми самыми необходимыми функциями. Помимо поддержки всех распространённых типов контента(текст, изображения, iframe, Ajax), присутствует возможность подключения дополнительного , а также вы можете разработать своё собственное расширение для этого плагина, которое будет полностью соответствовать вашим потребностям при создании нового проекта. Как всё это хозяйство(разработка расширения) работает, особо не вникал, но те кого этот плагин вставит, думаю разберутся))).

    • Зависимость : jQuery
    • Поддержка браузерами : IE8+, Chrome, Firefox, Safari и Opera
    • Лицензия : MIT license

    12. LightGallery

    LightGallery — многофункциональный лайтбокс-плагин с множеством дополнительных возможностей. Поставляется с более чем 20 опций, для настройки мельчайших деталей Lightbox. Здесь есть всё, ну, или почти всё)). Полноценная галерея изображений с аккуратно выстроенными миниатюрами, с элементами навигации и прокруткой миниатюр. Простая html-разметка в виде неупорядоченного списка

      с использованием атрибута data-src для полноразмерных картинок. Тоже самое и с видео из Youtube и Vimeo. Замечательно поддерживает все форматы видео HTML5, MP4, WebM, Ogg... Анимированные миниатюры, адаптивный макет с поддержкой мобильных устройств, слайд-эффекты и плавные переходы появления при переключении изображений, и другого контента. Внешний вид легко формируется и настраивается с помощью CSS. Предварительная загрузка изображений и оптимизация кода. Навигация с помощью клавиатуры для десктопов, а также возможность использования дополнительных шрифт-иконок. LightGallery — вот где настоящий «комбайн», главное не потеряться в обилии настроек и обширных возможностях этого плагина.
      Тем кому нужен приличный слайдер, рекомендую обратить внимание на от этих же разработчиков.

      • Зависимость : jQuery
      • Поддержка браузерами : IE7+, Chrome, Firefox, Safari, Opera, iOS, Android и Windows Phone
      • Лицензия : MIT license

      13. StripJS

      Непривычная, я бы даже сказал: необычная реализация lightbox, точнее, не совсем привычное представление содержания, когда изображение или видео, в оформлении лайтбокса, появляются справа, заполняя при этом не весь экран, а лишь на заданный размер полноразмерной картинки или видео. На больших экранах такой подход понятен, остаётся возможность взаимодействия со страницей. На маленьких экранах мобильных устройств, вся эта инновационная конструкция, плавно переходит в классический «лайтбокс». Задумка интересная, посмотрите демо, может кого и вставит такой креатив.

      • Зависимость : jQuery
      • Поддержка браузерами : IE7+, Chrome, Firefox, Safari, Opera, iOS 5+ и Android 3+
      • Лицензия : Creative Commons BY-NC-ND 3.0 license

      14. LightLayer

      Простой в использовании плагин лайтбокса, который хорошо сочетается с любым проектом и также хорошо смотрится на любом экране. В плагине LightLayer представлен контроль над множеством настроек, такими как изменение цвета фона и степени его прозрачности, положение базового блока, выбор эффектов переходов при открытии/закрытии, функции которыми пользователи могут манипулировать самостоятельно. Плагин отлично работает с содержанием внешних веб-сайтов, встроенными видео-плеерами и картами.

      • Зависимость : jQuery
      • Поддержка браузерами : IE9+, Chrome, Firefox, Safari и Opera
      • Лицензия : MIT license

      15. FluidBox

      Fluidbox — лайтбокс плагин исключительно для изображений. Количество всевозможных вариаций представления изображений по-настоящему впечатляет. Плагин замечательно работает с изображениями в различном исполнении, включая плавающие изображения, изображение с абсолютным позиционированием, картинки и фотографии обрамлённые рамкой, и имеющие отступы, с одиночными изображениями, и объединёнными в галерею. В общем, что зря воду лить, расписать все возможности плагина в коротеньком представлении всё равно не получится, так что лучше посмотрите демо, покрутите, повертите и думаю, этот плагин понравится многим.

      • Зависимость : jQuery
      • Поддержка браузерами : IE9+, Chrome, Firefox, Safari, Opera
      • Лицензия : MIT license

      На этом пожалуй и всё! Надеюсь этот небольшой обзор, поможет вам разобраться в ворохе предлагаемых продуктов веб-разработки. Хочу заметить, что далеко не все из представленных в подборке плагины я использовал на рабочих проектах, большинство из них прощупывал на тестовых площадках или на лаколке, так что при возникновении каких-либо вопросов, скорее всего будем их решать вместе, а вместе, как всегда всё у нас получится.

      Находитесь в поисках подходящего русифицированного шаблона для ваших целей? Вероятно, в таком случае, вам стоит посетить маркетплейс TemplateMonster. По той простой причине, что совсем недавно на сайте появился новый раздел шаблонов. Теперь каждый пользователь может ознакомиться с коллекцией , которая будет обновлять и обновляться. Тексты для шаблонов были написаны вручную. Но это не единственный плюс данных готовых решений. Ведь в их пакеты можно найти все, что облегчит работу над разработкой онлайн-проекта, включая визуальный редактор.

      С Уважением, Андрей

      В нашей коллекции скриптов вы сможете найти небольшие, но очень полезные и функциональные плагины для своего сайта. Обращаясь к средствам jQuery Gallery , легко организовать галерею цифровых фотографий с приятным дизайном, с возможностью прокрутки, масштабирования, просмотра миниатюр и со множеством других полезных функций. Имеются как строгие решения для профессиональных сайтов, так и яркие, с анимацией и другими спецэффектами — для развлекательных проектов.

      С помощью средств jQuery изображения можно просматривать, не перезагружая страницу и не увеличивая поток трафика. Представленные плагины позволяют оптимизировать подгрузку изображений в реальном времени, представить галерею в удобном и приятном для пользователя виде. Благодаря удобству настроек и множеству доступных решений ваша собственная jQuery-фотогалерея может теперь выглядеть точно так, как вы пожелаете. Представленные скрипты протестированы на разных платформах и отличаются прекрасной совместимостью.

      В данном уроке мы разберемся, как создать адаптивную галерею изображений с каруселью миниатюр. Галерея будет подстраиваться под размер окна просмотра, также можно будет отключить или включить карусель миниатюр. Навигация может осуществляться с клавиатуры.

      Мы будем использовать плагин jQuery Touchwipe , так что навигация может осуществляться с помощью характерных манипуляций с экраном на iPhone и iPad.

      Разметка HTML

      В коде HTML мы будем использовать основной контейнер с классом “rg-gallery ”. Также он будет иметь одинаковый с классом идентификатор. В другом элементе div с классом “rg-thumbs” будет размещаться структура для карусели Elastislide:

      Предыдущий Следующий

      Миниатюры будут иметь два атрибута data , которые будут использоваться позже в нашем коде JavaScript. Атрибут “data-large” содержит путь к большому изображению, а атрибут “data-description” содержит подпись, которая будет выводиться под текущим большим изображением.

      Для структуры области просмотра больших изображений используется шаблон jQuery, который добавляется в заголовке нашего документа:

      {{if itemsCount > 1}} Предыдущее изображение Следующее изображение {{/if}}

      Мы добавляем условие, что навигация будет выводится только в случае наличия более одного изображения. Контейнер “rg-image ” будет использоваться для добавления большого изображения.

      CSS

      Кроме настройки нескольких параметров (например, поля и отступы для миниатюр в карусели Elastislide) нужно задать стили для остальных элементов галереи..

      Элемент “rg-image-wrapper ”, который используется в шаблоне jQuery, будет иметь относительное позиционирование и полупрозрачное повторяющееся изображение в качестве фона. Рамка будет иметь скругленные углы и минимально допустимую высоту 20 px:

      Rg-image-wrapper{ position:relative; padding:20px 30px; background:transparent url(../images/black.png) repeat top left; -moz-border-radius: 10px; -webkit-border-radius: 10px; border-radius: 10px; min-height:20px; }

      Контейнер, который используется для добавления большого изображения будет иметь относительное позиционирование и высоту строки 0. Добавим для него выравнивание текста по центру мы заставим все строчные элементы выравниваться по центру. Но так как мы не используем для изображения “display:block ”, нужно установить высоту строки равной 0. Таким образом, не будет зазора над изображением, так как оно является строчным элементом по умолчанию:

      Rg-image{ position:relative; text-align:center; line-height:0px; }

      С помощью задания свойству большого изображения max-width значения 100%, мы добиваемся, чтобы оно всегда оставалось окруженным плавающим контейнером. Мы не нуждаемся в данном свойстве, но если вы хотите ограничить размер области предварительного просмотра, то вам придется устанавливать фиксированную высоту для класса “rg-image ” и изображение будет заполнять его при изменении ширины области просмотра.

      Rg-image img{ max-height:100%; max-width:100%; }

      Навигационные элементы будут иметь следующие стили:

      Rg-image-nav a{ position:absolute; top:0px; left:0px; background:#000 url(../images/nav.png) no-repeat -20% 50%; width:28px; height:100%; text-indent:-9000px; cursor:pointer; opacity:0.3; outline:none; -moz-border-radius: 10px 0px 0px 10px; -webkit-border-radius: 10px 0px 0px 10px; border-radius: 10px 0px 0px 10px; }

      Это стиль для левой стрелки, теперь посмотрим на свойства для правой стрелки:

      Rg-image-nav a.rg-image-nav-next{ right:0px; left:auto; background-position:115% 50%; -moz-border-radius: 0px 10px 10px 0px; -webkit-border-radius: 0px 10px 10px 0px; border-radius: 0px 10px 10px 0px; }

      Так как мы уже определили значение свойства left для элементов в целом, его придется установить в значение auto для правой стрелки.

      При наведении курсора мыши стрелки будут становиться более четкими:

      Rg-image-nav a:hover{ opacity:0.8; }

      Подписи будут иметь следующие стили:

      Rg-caption { text-align:center; margin-top:15px; position:relative; } .rg-caption p{ font-size:11px; letter-spacing:2px; font-family: "Trebuchet MS", "Myriad Pro", Arial, sans-serif; line-height:16px; padding:0 15px; text-transform:uppercase; }

      Для переключателя установим следующие стили:

      Rg-view{ height:30px; } .rg-view a{ display:block; float:right; width:16px; height:16px; margin-right:3px; background:#464646 url(../images/views.png) no-repeat top left; border:3px solid #464646; opacity:0.8; } .rg-view a:hover{ opacity:1.0; } .rg-view a.rg-view-full{ background-position:0px 0px; } .rg-view a.rg-view-selected{ background-color:#6f6f6f; border-color:#6f6f6f; } .rg-view a.rg-view-thumbs{ background-position:0px -16px; }

      Индикатор загрузки будет появляться в центре изображения:

      Rg-loading{ width:46px; height:46px; position:absolute; top:50%; left:50%; background:#000 url(../images/ajax-loader.gif) no-repeat center center; margin:-23px 0px 0px -23px; z-index:100; -moz-border-radius: 10px; -webkit-border-radius: 10px; border-radius: 10px; opacity:0.7; }

      JavaScript

      Основная идея галереи заключается в ее гибкости. Частично задача решена с с помощью стилей: большое изображение подгоняется под контейнер. Для получения адаптивной карусели миниатюр мы используем плагин Elastislide.

      Определим некоторые переменные:

      // Контейнер галереи var $rgGallery = $("#rg-gallery"), // Контейнер карусели $esCarousel = $rgGallery.find("div.es-carousel-wrapper"), // Пункт карусели $items = $esCarousel.find("ul > li"), // Общее количество пунктов itemsCount = $items.length;

      Затем функцию галереи:

      Gallery = (function() { //Функция галереи })(); Gallery.init();

      Здесь мы определяем переменные для текущего изображения, режима вывода и контроля за загрузкой изображения. Затем вызываем несколько функций, которые определяются ниже:

      // Индекс текущего пункта var current = 0, // Режим: карусель || во весь экран mode = "carousel", // Проверка, если одно изображение загружено anim = false, init = function() { // (Не обязательно) предварительная загрузка изображений здесьы... $items.add("").imagesLoaded(function() { // Добавляем опции _addViewModes(); // Добавляем обертку большого изображения _addImageWrapper(); // Выводим первое изображение _showImage($items.eq(current)); }); // Инициализуем карусель _initCarousel(); },

      Вызываем плагин Elastislide:

      InitCarousel = function() { // Используем плагин elastislide: $esCarousel.show().elastislide({ imageW: 65, onClick: function($item) { if(anim) return false; anim = true; // По нажатию клавиши мыши выводим изображение _showImage($item); // Меняем текущее current = $item.index(); } }); // Устанавливаем текущее для elastislide $esCarousel.elastislide("setCurrent", current); },

      Следующая функция выводит переключатели режимов просмотра и управляет ими:

      AddViewModes = function() { // Кнопки вверху справа: скрыть / показать карусель var $viewfull = $(""), $viewthumbs = $(""); $rgGallery.prepend($("").append($viewfull).append($viewthumbs)); $viewfull.bind("click.rgGallery", function(event) { $esCarousel.elastislide("destroy").hide(); $viewfull.addClass("rg-view-selected"); $viewthumbs.removeClass("rg-view-selected"); mode = "fullview"; return false; }); $viewthumbs.bind("click.rgGallery", function(event) { _initCarousel(); $viewthumbs.addClass("rg-view-selected"); $viewfull.removeClass("rg-view-selected"); mode = "carousel"; return false; }); },

      Функция _addImageWrapper добавляет структуру для большого изображения и кнопки навигации, если общее количество изображений больше, чем одно. Также инициализируются события навигации. Используя плагин jQuery Touchwipe, мы добавляем поддержку навигации с помощью сенсорного экрана и клавиатуры:

      AddImageWrapper= function() { // Добавляем структуру для больших изображений и кнопок навигации (если общее количество пунктов > 1) $("#img-wrapper-tmpl").tmpl({itemsCount: itemsCount}).appendTo($rgGallery); if(itemsCount > 1) { // Добавляем навигацию var $navPrev = $rgGallery.find("a.rg-image-nav-prev"), $navNext = $rgGallery.find("a.rg-image-nav-next"), $imgWrapper = $rgGallery.find("div.rg-image"); $navPrev.bind("click.rgGallery", function(event) { _navigate("left"); return false; }); $navNext.bind("click.rgGallery", function(event) { _navigate("right"); return false; }); // Добавляем событие touchwipe для обертки большого изображения $imgWrapper.touchwipe({ wipeLeft: function() { _navigate("right"); }, wipeRight: function() { _navigate("left"); }, preventDefaultEvents: false }); $(document).bind("keyup.rgGallery", function(event) { if (event.keyCode == 39) _navigate("right"); else if (event.keyCode == 37) _navigate("left"); }); } },

      Навигация по большим изображениям контролируется следующей функцией:

      Navigate = function(dir) { // Навигация по большим изображениям if(anim) return false; anim = true; if(dir === "right") { if(current + 1 >= itemsCount) current = 0; else ++current; } else if(dir === "left") { if(current - 1 < 0) current = itemsCount - 1; else --current; } _showImage($items.eq(current)); },

      В зависимости от направления движения мы устанавливаем текущий элемент.

      Функция _showImage добавляет большое изображение и его название:

      ShowImage = function($item) { // Выводим большое изображение, которое ассоциировано с $item var $loader = $rgGallery.find("div.rg-loading").show(); $items.removeClass("selected"); $item.addClass("selected"); var $thumb = $item.find("img"), largesrc = $thumb.data("large"), title = $thumb.data("description"); $("").load(function() { $rgGallery.find("div.rg-image").empty().append(""); if(title) $rgGallery.find("div.rg-caption").show().children("p").empty().text(title); $loader.hide(); if(mode === "carousel") { $esCarousel.elastislide("reload"); $esCarousel.elastislide("setCurrent", current); } anim = false; }).attr("src", largesrc); }; return { init: init };