Use CSS to set the width and height of the image to 100%, and the image will automatically stretch to fill the containing div, without the need for jquery.
In addition, you will not need to center the image, as it will already be stretched to fill the div (in the center with zero margins).
HTML:
<div id="containingDiv"> <img src=""> </div>
CSS
#containingDiv{ width: 200px; height: 100px; } #containingDiv img{ width: 100%; height: 100%; }
Thus, if javascript is disabled for your users, the image will be stretched to fill the entire width / height of the div.
OR
JQuery path (SHRINK / STRETCH TO FIT - INCLUDES 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 path - CROP TO FIT (without 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}); } });
source share