Иногда бывает необходимым немного изменить картинку, которая выводится популярным скриптом lightbox. К примеру изменить ширину или высоту картинки. Решение этой проблемы не очевидно, но существует.
Украина, Киев •
ул. Дегтяревская 50, оф. 601 •
welcome@aloha.kiev.ua •
Lightbox - изменение размера картинки

Еще может быть полезна эта статья JQuery Lightbox - изменение размера картинки.
Столкнулся с проблемой при использовании Lightbox - мне необходимо однозначно определить размеры картинки ( изображения), которые выводится при нажатии. В моем случае, размер картинки не должен был превышать 400 пикселей.
Простое ковыряние с lightbox’ css не дал желаемых результатов, поскольку переопределить размер картинки можно через css, но контейнера, в котором выводится картинка - нет. И в некоторых броузерах получается маленькая картинки на громадном белом фоне.
Традиционно, на помощь прищел гугл, по ссылке можно посмотреть, как парни решают проблему изменения размера картинок в Lightbox.
На сам пост не смотрим, простым переопределнием размеров картинки не получается заставить lightbox делать resize изображения как надо ( о чем и свидетельствуют отзывы в комментах). CSS надо менять, но кроме него необходимо внести правки и в lightbox.js
Итак, в lightbox.css правим
#lightbox img#lightboxImage{ width: 400px; height: auto;}В lightbox.js
Код, который необходимо вставить, отмечен *
//
// Configuration
//
...
*var maxWidthImage = 400; //400 is max width show image in pixels*
//------------------------------------------------------------------
...
//
// changeImage()
// Hide most elements and preload image in preparation for resizing image container.
//
changeImage: function(imageNum) {
activeImage = imageNum; // update global var
// hide elements during transition
if(animate){ Element.show('loading');}
Element.hide('lightboxImage');
Element.hide('hoverNav');
Element.hide('prevLink');
Element.hide('nextLink');
Element.hide('imageDataContainer');
Element.hide('numberDisplay');
imgPreloader = new Image();
// once image is preloaded, resize image container
imgPreloader.onload=function(){
Element.setSrc('lightboxImage', imageArray[activeImage][0]);
*
if(imgPreloader.width > maxWidthImage){
var resizeHeight = ((imgPreloader.height)/(imgPreloader.width)* maxWidthImage);
myLightbox.resizeImageContainer(maxWidthImage, resizeHeight);
Element.setWidth('lightboxImage', maxWidthImage);
}
else {
myLightbox.resizeImageContainer(imgPreloader.width, imgPreloader.height);
}
*
imgPreloader.onload=function(){}; // clear onLoad, IE behaves irratically with animated gifs otherwise
}
imgPreloader.src = imageArray[activeImage][0];
},Я сделал немного не так правильно,
более в лоб. Обошелся без декларации отдельной переменной и проверок.
imgPreloader.onload = (function(){
this.lightboxImage.src = this.imageArray[this.activeImage][0];
this.resizeImageContainer(/*imgPreloader.width*/ 400, (imgPreloader.height/imgPreloader.width)*400);
}).bind(this);
imgPreloader.src = this.imageArray[this.activeImage][0];Работает :)


