Как я могу изменить image_crop с плагином Galleria jQuery, если изображение шире и выше? - PullRequest
1 голос
/ 12 февраля 2011

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

if ($(image).width() > $(image).height()){  
var upordown = "width"
} else {        
var upordown = "height"
}

Переменная находится здесь и является частью списка параметров для Galleria:

 image_crop : upordown,

Любая помощь будет оценена.

Ответы [ 2 ]

2 голосов
/ 15 февраля 2011

Вы ищете способ всегда разместить изображение в контейнере без обрезки?Попробуйте установить image_crop (или imageCrop в последней версии) на false.

Редактировать: вы можете прослушать событие loadfinish и установить параметры в соответствииразмеры изображения на лету.Вам нужно позвонить refreshImage, чтобы применить изменения.

$('#galleria').galleria({
    extend: function() {
        var gallery = this,
            landscape;
        this.bind('loadfinish', function(e) {
            landscape = e.imageTarget.width >= e.imageTarget.height 
                ? 'width' : 'height';
            gallery.setOptions( 'imageCrop', landscape ).refreshImage();
        });
    }
});
1 голос
/ 15 февраля 2012

исходя из примера Дэвида, я чувствую, что это лучший вариант.Это не совсем гладко, но помогает решить проблему, о которой говорил Ли Тинделл.

this.bind('image', function(e) {
    var imageW = e.imageTarget.width;
    var imageH = e.imageTarget.height;

    if (imageH > imageW) {
        landscape = 'height';
    } else if (imageH < imageW) {
        landscape = true;
    }

    this.setOptions({ imageCrop: landscape }).refreshImage();
});
...