Похоже, я плохо объяснил себя. Я прошу прощения за это.
Я отредактировал этот вопрос, чтобы сделать его более понятным.
Сценарий
У нас есть веб-сайт, на котором нет изображений. Он ссылается на изображение на другом сервере.
План
- Изменение размера изображения с сохранением пропорций.
- Центрировать изображения с измененным размером.
- Гибкий, поэтому он может поместиться в нескольких размерах.
Ошибка
Мой код работает как задумано, однако есть ошибка, которая встречается только иногда.
Если вы перейдете на страницу поиска веб-сайта и несколько раз переключитесь между страницами 1, 2, 3 и 4, вы заметите, что иногда изображения хороши… в других случаях они выглядят выровненными по левому краю и не занять всю площадь контейнера.
ссылки
Полный сайт (в бета-версии)
Файл JavaScript
Плагин jQuery, который мне помог (jThumb)
План (подробная версия)
Предположим, что изображение имеет размер 600x400 пикселей (помните, что оно не размещено на этом сервере), и с помощью jQuery и CSS я хочу изменить размер изображения (с сохранением пропорций) в контейнере размером 310x200 пикселей.
Другая задача - центрировать изображение.
Все это должно быть гибким, потому что на сайте есть несколько разных размеров контейнеров.
Что я уже сделал (вы можете найти это по ссылке выше)
Чтобы изменить размер изображения, которое я делаю:
var img = new Image();
img.src = $(this).attr("src");
var width = $(this).css('width');
var height = $(this).css('height');
var photoAspectRatio = img.width / img.height;
var canvasAspectRatio = width.replace("px", "") / height.replace("px", "");
if (photoAspectRatio < canvasAspectRatio) {
$(this).css('width', width);
$(this).css('height', 'auto');
var intHeight = height.replace("px", ""); //tirar o PX
$(this).css('marginTop', (-Math.floor(intHeight / 2)));
}
else {
$(this).css('width', 'auto');
$(this).css('height', height);
}
$(this).wrap('<div class="thumb-img" style="width:' + width + ' ;height:' + height + ';"><div class="thumb-inner">' + '</div></div>');
Чтобы центрировать изображение, которое я делаю:
jQuery(this).css('position','absolute');
jQuery(this).left( '-' + ( parseInt( $(this).width() ) / 2 ) + 'px' );
jQuery(this).top( '-' + ( parseInt( $(this).height() ) / 2 ) + 'px' );
jQuery(this).css('margin-left', '50%' );
jQuery(this).css('margin-top', '50%');