Изменение размера фотографии увеличивает fancybox.js

#jquery #fancybox

#jquery #fancybox

Вопрос:

Я использую fancybox на сайте с большим количеством файлов JPEG. Я использую отдельные файлы изображений большого размера, по крайней мере, вдвое превышающие конечные максимальные размеры для просмотра, сильно сжатые для уменьшения КБ. Этот метод, похоже, работает хорошо и экономит много времени на создание версий x2 и x3 каждого оригинала и позволяет избежать использования srcset.

Существуют альтернативные виды изображений, которые просматриваются в увеличенном виде через fancybox, но увеличенные изображения отображаются с фактическим размером файла в пикселях, поэтому я не могу понять, как управлять конечным размером отображения увеличенных изображений fancybox’d на экране.

Можно ли это сделать? Спасибо, Питер Х.

(не все увеличенные изображения имеют одинаковый размер)

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

1. Вы должны быть более конкретными, что вы имеете в виду под «я не могу понять, как управлять конечным размером дисплея»?

2. Изображения, отображаемые fancybox, отображаются с фактическим размером в пикселях. Я бы хотел, например, чтобы изображения отображались с размером 50% от их фактического пикселя.

Ответ №1:

Если вы используете fancyBox3, то вы можете использовать обратный вызов «afterLoad» для изменения размеров изображения:

 $('[data-fancybox]').fancybox({
    afterLoad : function( instance, slide ) {
        if ( slide.type === 'image' ) {
            slide.width  = slide.width  * 0.5;
            slide.height = slide.height * 0.5;
        }
    }
});
  

Если вы хотите применить это ко всем будущим экземплярам, то это тоже возможно. Пример:

 $(document).on('onComplete.fb', function( e, instance, slide ) {
    // Your code goes here
});
  

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

1. Спасибо, это очень полезно знать. В настоящее время я использую версию v2.1.4, но попробую несколько страниц с версией v3 плюс приведенный выше код. Заставит ли добавление кода только один раз на страницу обратный вызов работать для каждого экземпляра ссылок fancybox на этой странице?

2. Только для выбранных элементов. Я обновил ответ с помощью примера.