Infinite zoom

인피니트 줌

A loop that looks like it keeps zooming in forever through a self-similar pattern — in reality just a handful of layers relaying the same size cycle with staggered timing.

Also known as: Zoom loopDroste loopZoom tunnel
···
html
<div class="tunnel">
  <i class="ring r1"></i><i class="ring r2"></i><i class="ring r3"></i><i class="ring r4"></i>
</div>
css
.tunnel{position:relative;width:1px;height:1px}
.ring{position:absolute;top:50%;left:50%;width:10px;height:10px;margin:-5px 0 0 -5px;
  border:3px solid var(--accent);border-radius:50%;animation:zoomz 4.8s linear infinite}
.r1{border-color:var(--accent)}
.r2{border-color:var(--accent-2);animation-delay:-1.2s}
.r3{border-color:var(--accent-3);animation-delay:-2.4s}
.r4{border-color:var(--accent);animation-delay:-3.6s}
@keyframes zoomz{
  0%{width:10px;height:10px;margin:-5px 0 0 -5px;opacity:0}
  8%{opacity:1}
  100%{width:420px;height:420px;margin:-210px 0 0 -210px;opacity:0}
}

One layer starts tiny (say 10px), grows until it fills the screen (say 340%), and fades to opacity 0 — looping forever. Add three or four more layers running the identical animation but with negative delays (−1s, −2s, −3s…) so they each start at a different phase; the instant one layer fills the screen and vanishes, the next is already mid-grown, and the eye reads it as one continuous, unbroken zoom.

The timing between "growing" and "fading" is the whole trick — a layer needs to start turning transparent just before it fully fills the frame, or the handoff to the next layer pops instead of gliding. More layers (tighter delay spacing) makes the transition smoother, at the cost of more DOM nodes and paint work.

This isn't actually infinite content (a fractal, a recursively nested image) — it's the same animation repeated out of phase. The illusion is most convincing when the pattern itself is self-similar; overlapping visually different images mostly reads as "things growing and disappearing," and the sense of one continuous zoom weakens.

When to use

Use it for loading screens, background decoration, or a brand intro where you need eye-catching ambient motion. If you actually need to show content — images, data — use a real zoom interaction (pinch zoom, map zoom) instead of this illusion.