JSFiddle - React, Tailwind, and code Playground
HTML
Should pillarbox
<div class="frame">
<img src="http://www.placekitten.com/200/300" />
</div>
Should letterbox
<div class="frame">
<img src="http://www.placekitten.com/300/200" />
</div>
Should stay inscribed and centered automatically when frame is scaled uniformly
<div id="scale" class="frame">
<img src="http://www.placekitten.com/300/200" />
</div>
CSS
.frame {
width: 200px;
height: 200px;
border: 2px solid black;
margin: 10px 0px 100px 0;
}
JavaScript
var scaleEl = document.getElementById('scale');
var min = 100;
var max = 200;
var size = 200;
var change = -1;
setInterval(function() {
if (size > max || size < min) {
change = -change;
}
size = size + change;
scaleEl.style.width = size + 'px';
scaleEl.style.height = size + 'px';
}, 30);