Используйте CSS, чтобы установить как ширину и высоту изображения до 100%, и изображение будет автоматически растягивается, чтобы заполнить содержащий DIV, без необходимости JQuery.
Кроме того, вам не нужно будет центрировать изображение так, как оно уже растянуто, чтобы заполнить div (с нулевым положением).
HTML:
<div id="containingDiv">
<img src="">
</div>
CSS:
#containingDiv{
width: 200px;
height: 100px;
}
#containingDiv img{
width: 100%;
height: 100%;
}
Таким образом, если пользователи отключили JavaScript, изображение все равно будет растянуто на весь Div ширина/высота.
ИЛИ
Способ JQuery (SHRINK/РАСТЯЖЕНИЕ ДЛЯ ПРИСПОСОБЛЕНИЯ - не включает в себя WHITESPACE):
$('img.shelf-img').each(function(i, item) {
var img_height = $(item).height();
var div_height = $(item).parent().height();
if(img_height<div_height){
//IMAGE IS SHORTER THAN CONTAINER HEIGHT - CENTER IT VERTICALLY
var newMargin = (div_height-img_height)/2+'px';
$(item).css({'margin-top': newMargin });
}else if(img_height>div_height){
//IMAGE IS GREATER THAN CONTAINER HEIGHT - REDUCE HEIGHT TO CONTAINER MAX - SET WIDTH TO AUTO
$(item).css({'width': 'auto', 'height': '100%'});
//CENTER IT HORIZONTALLY
var img_width = $(item).width();
var div_width = $(item).parent().width();
var newMargin = (div_width-img_width)/2+'px';
$(item).css({'margin-left': newMargin});
}
});
JQuery путь - УРОЖАЙ ДЛЯ ПРИСПОСОБЛЕНИЯ (NO WHITESPACE):
$('img.shelf-img').each(function(i, item) {
var img_height = $(item).height();
var div_height = $(item).parent().height();
if(img_height<div_height){
//INCREASE HEIGHT OF IMAGE TO MATCH CONTAINER
$(item).css({'width': 'auto', 'height': div_height });
//GET THE NEW WIDTH AFTER RESIZE
var img_width = $(item).width();
//GET THE PARENT WIDTH
var div_width = $(item).parent().width();
//GET THE NEW HORIZONTAL MARGIN
var newMargin = (div_width-img_width)/2+'px';
//SET THE NEW HORIZONTAL MARGIN (EXCESS IMAGE WIDTH IS CROPPED)
$(item).css({'margin-left': newMargin });
}else{
//CENTER IT VERTICALLY (EXCESS IMAGE HEIGHT IS CROPPED)
var newMargin = (div_height-img_height)/2+'px';
$(item).css({'margin-top': newMargin});
}
});
Вы пробовали 'img.shelf-img {width: 100%; высота: 100%; } '? – Joe
Вы пробовали свойство CSS 'background-size: cover;'? – Alvaro
у вас есть логика, которая связывает картинку с div? –