JSFiddle - React, Tailwind, and code Playground

by ddehghan

HTML

<div class='container'>
    <img class="test1" src='http://fakeimg.pl/100x250/' />
</div>
<br>
<div class='container'>
    <img class="test2" src='http://fakeimg.pl/100x250/' />
</div>
<br>
<div class='container'>
    <img class="test1" src='http://fakeimg.pl/250x50/' />
</div>
<br>
<div class='container'>
    <img class="test2" src='http://fakeimg.pl/250x50/' />
</div>
<br>
<div class='container'>
    <img class="test1" src='http://fakeimg.pl/400x500/' />
</div>
<br>
<div class='container'>
    <img class="test2" src='http://fakeimg.pl/400x500/' />
</div>
<br>
<div class='container'>
    <img class="test1" src='http://fakeimg.pl/25x50/' />
</div>
<br>
<div class='container'>
    <img class="test2" src='http://fakeimg.pl/25x50/' />
</div>
<br>
<div class='container'>
    <img class="test1" src='http://fakeimg.pl/500x100/' />
</div>
<br>
<div class='container'>
    <img class="test1" src='http://fakeimg.pl/500x100/' />
</div>

CSS

.container {
    width: 300px;
    height: 200px;
    border: 1px solid green;
}
.test1 {
    max-width: 100%;
    max-height: 100%;
}
.test2 {
}

JavaScript

$(".test2").one("load", function () {
    var $img = $(this);

    var pw = this.parentNode.clientWidth;
    var ph = this.parentNode.clientHeight;

    var w = this.width;
    var h = this.height

    if (w > h) {
        $img.css({
            'width': '100%',
                'height': 'auto',
                'margin-top': (ph - h) / 2
        });

    } else {
        $img.css({
            'width': 'auto',
                'height': '100%',
                'margin-left': (pw - w) / 2
        });
    }
}).each(function () {
    if (this.complete) $(this).load();
});