JSFiddle - React, Tailwind, and code Playground
HTML
<div id='cover' class='bgthumb'><img src='http://fc01.deviantart.net/fs71/f/2011/192/5/2/portrait_test_by_ev_r_more578-d3lp0nv.jpg'></div>
<div id='cover' class='bgthumb'><img src='http://filipfolkesson.com/wp-content/uploads/2011/12/landscape-test.png'></div>
<div id='contain' class='bgthumb'><img src='http://fc01.deviantart.net/fs71/f/2011/192/5/2/portrait_test_by_ev_r_more578-d3lp0nv.jpg'></div>
<div id='contain' class='bgthumb'><img src='http://filipfolkesson.com/wp-content/uploads/2011/12/landscape-test.png'></div>
CSS
.bgthumb
{
width:120px;
height:80px;
}
JavaScript
(function($) {
$.fn.imagefit = function(contain) {
this.each( function() {
var $this = $(this),
$wrapper = $this.parent(),
wrapper_width = $wrapper.width(),
wrapper_height = $wrapper.height(),
wrapper_ratio,
image_ratio;
// ratios
image_ratio = $this.width() / $this.height();
wrapper_ratio = wrapper_width / wrapper_height;
var ratio_cond = wrapper_ratio > image_ratio;
if(contain) {
ratio_cond = !ratio_cond;
}
if ( ratio_cond ) {
$wrapper.css({
'background' : 'url('+$this.get(0).src+')',
'background-size' : '100% auto',
'background-position' : '0px 50%',
'background-repeat' : 'no-repeat',
'background-color' : '#FF00FF',
'border' : '1px solid black'
});
} else {
$wrapper.css({
'background' : 'url('+$this.get(0).src+')',
'background-size' : 'auto 100%',
'background-position' : '50% 0px',
'background-repeat' : 'no-repeat',
'background-color' : '#FF00FF',
'border' : '1px solid black'
});
}
$this.remove();
});
return this;
};
$('div.bgthumb#cover > img').imagefit(false);
$('div.bgthumb#contain > img').imagefit(true);
}(jQuery));