All I am doing is replacing aspect-ratio: 1; with, padding-top: 56.25%; in the code.
aspect-ratio: 1;
padding-top: 56.25%;
:root { --color-a: #1155cc; --color-b: black; --color-c: #1155cc; --color-d: black; } html, body { margin: 0; padding: 0; } body { background: #121212; padding: 50px 8px; } .panel-left, .panel-right { position: fixed; height: 100%; width: 50%; top: 0%; overflow: hidden; z-index: 0; transform: translateX(0); transition: transform 3s cubic-bezier(0.645, 0.045, 0.355, 1); transition-delay: 1s; } .panel-left { left: 0; } .panel-right { right: 0; } .panel-left::before, .panel-right::before { content: ""; position: fixed; height: 100%; width: 200%; top: 0; left: 0; background: black; } .panel-right::before { left: -100%; } body:hover .panel-left { transform: translateX(-100%); } body:hover .panel-right { transform: translateX(100%); } .inner { height: 100%; width: 200%; position: absolute; left: 0; top: 0; z-index: 2; display: flex; flex-direction: column; justify-content: center; align-items: center; margin: auto; } .panel-right .inner { left: -100%; } .inner span, .inner span:before, .inner span:after, .inner:before, .inner:after { aspect-ratio: 1; margin: auto; height: 100%; } .inner:before { content: ""; background: url(); } .inner:after { content: ""; background: url(); } .inner span { background: url(); position: relative; } .inner span:before, .inner span:after { content: ""; display: block; position: absolute; inset: 0 0 0 0; } .inner span:before { background: url(); transform: translateX(-99.99%); } .inner span:after { background: url(); transform: translateX(99.99%); } .inner span, .inner span:before, .inner span:after, .inner:before, .inner:after { background-size: cover; }
<div class="panel-left"> <div class="inner"><span></span></div> </div> <div class="panel-right"> <div class="inner"><span></span></div> </div>