Создание галерей изображений с помощью Photoswipe: простой пример

Прежде всего, давайте убедимся, что у нас есть необходимые файлы. Вы можете загрузить последнюю версию Photoswipe с их официального сайта (photoswipe.com). Обязательно включите в свой проект файлы CSS и JavaScript. Вам также потребуется включить jQuery, поскольку Photoswipe использует его.

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

<div id="my-gallery" class="pswp" tabindex="-1" role="dialog" aria-hidden="true">
    <!-- Gallery items will be dynamically inserted here -->
</div>
<div class="image-grid">
    <a href="path/to/image-1.jpg">
        <img src="path/to/thumb-1.jpg" alt="Image 1">
    </a>
    <a href="path/to/image-2.jpg">
        <img src="path/to/thumb-2.jpg" alt="Image 2">
    </a>
    <!-- Add more image links here -->
</div>

В приведенном выше фрагменте кода у нас есть элемент-контейнер с идентификатором «my-gallery». Здесь будет инициализирован Photoswipe. Внутри контейнера у нас есть заполнитель для элементов галереи, который мы будем заполнять динамически.

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

Теперь перейдем к части JavaScript. Мы будем использовать jQuery для обработки привязки событий и инициализации Photoswipe. Вот как выглядит код:

$(document).ready(function() {
    var $gallery = new PhotoSwipe('.pswp');

    $('.image-grid').on('click', 'a', function(e) {
        e.preventDefault();

        var items = [];
        var index = 0;

        $('.image-grid a').each(function() {
            var $anchor = $(this);
            var item = {
                src: $anchor.attr('href'),
                w: 1200, // Replace with actual image width
                h: 800,  // Replace with actual image height
                title: $anchor.find('img').attr('alt')
            };

            items.push(item);

            if ($anchor.is($(e.currentTarget))) {
                index = items.length - 1;
            }
        });

        $gallery.options.index = index;
        $gallery.items = items;
        $gallery.init();
    });
});

В приведенном выше коде JavaScript мы ждем готовности DOM, используя $(document).ready(). Затем мы создаем новый экземпляр PhotoSwipeи передаем селектор для нашего элемента-контейнера.

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

Мы также отслеживаем индекс выбранного элемента, чтобы Photoswipe мог открыть галерею в правильном положении. Наконец, мы обновляем свойства indexи itemsэкземпляра галереи и инициализируем его.

И вуаля! Теперь у вас есть функциональная галерея изображений с помощью Photoswipe. Просто нажмите на миниатюру любого изображения, и Photoswipe откроет красивый лайтбокс с элементами управления навигацией, возможностями масштабирования и стильным интерфейсом.

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

Так что давайте, попробуйте и раскройте свой творческий потенциал с помощью Photoswipe!