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);