Небольшое изменение в вашем коде, кажется, решает проблему.
Изменить масштаб по перспективе + translateZ. это уменьшает размер элемента (так как теперь он «далеко») и, похоже, не содержит ошибки:
setInterval(() => {
const className = document.getElementsByTagName('main')[0].className
document.getElementsByTagName('main')[0].className = className ? '' : "shazam"
}, 2000)
main {
height: 300px;
width: 300px;
border: 1px solid black;
margin: auto;
overflow: auto;
transform: perspective(100px) translateZ(-1000px);
transition: transform 1500ms;
transform-origin: top left;
}
.shazam {
transform: perspective(100px) translateZ(0px);
}
<h1>List of interesting things I've done during lockdown</h1>
<main>
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li>… Who cares about lists anyway?</li>
</ul>
</main>