Я нашел более полное решение, которое заставит свойство width правильно масштабироваться:
Сначала вам нужно добавить идентификатор для большого изображения, чтобы сделать это, измените следующую строку кода в функции onPageLoad в файле jquery.galleria.js:
var _img = $(new Image()).attr('src',_src).addClass('replaced');
добавьте к нему, чтобы оно теперь выглядело следующим образом:
var _img = $(new Image()).attr('src',_src).attr('id','mainImg').addClass('replaced');
Теперь это добавляет идентификатор к изображению, чтобы оно могло быть нацелено.
Далее, в вашем индексном файле (или где бы вы ни разместили код, который инициирует галерею) вы теперь измените код, как показано ниже:
// fade in the image & caption
if(! ($.browser.mozilla && navigator.appVersion.indexOf("Win")!=-1) ) { // FF/Win fades large images terribly slow
image.css('display','none').fadeIn(1000);
}
var newHeight = 420;
var mainImage = document.getElementById('mainImg');
var imgInitHeight = mainImage.height;
var imgInitWidth = mainImage.width;
var imgScaleRatio = newHeight/imgInitHeight;
var newWidth = Math.ceil(imgInitWidth*imgScaleRatio);
image.css('height', newHeight);
image.css('width', newWidth);
caption.css('display','none').fadeIn(1000);
Переменная newHeight - это высота, на которой вы хотите, чтобы большое изображение отображалось. Затем вам нужно нацелить изображение, чтобы получить его высоту и ширину, ДО того как оно будет изменено, эти значения сохраняются в imgInitHeight и imgInitWidth соответственно. Теперь, когда вы знаете значения newHeight и imgInitHeight, можно рассчитать коэффициент, по которому необходимо масштабировать изображение, чтобы оно достигло новых размеров, это сохраняется в свойстве imgScaleRatio.
После определения отношения вы можете вычислить новую ширину изображения и быть уверенным, что оно масштабируется правильно. Как только это будет сделано, просто примените значения CSS к изображению, и все готово! Надеюсь, это кому-нибудь поможет.
Джон Тиви-Джонс