v150 · CSS · Animation
Animatable zoom
The CSS zoom property can now be transitioned and animated — transition: zoom 0.3s ease smoothly scales an element and its layout, unlike transform: scale() which leaves the element's box untouched.
concepts
-
Zoom Gallery
A card grid where hover triggers
transition: zoom 0.3s ease. The zoomed card actually expands in the layout flow, nudging its siblings — impossible to achieve withtransform: scale(). -
Zoom vs Scale
Side-by-side comparison: the same hover interaction applied once with
zoomand once withtransform: scale(). See how layout reflows differently between the two approaches. -
Keyframe Zoom
zoominside@keyframes— pick from four animation sequences (zoom-in, zoom-pulse, zoom-bounce, zoom-out-in) and watch the animated element push its neighbors as it grows, while the same animation usingtransform: scale()leaves layout frozen. The layout reflow is measured and logged live. -
Product Focus
An e-commerce grid with spring-animated zoom on hover. The hovered card physically expands and pushes its neighbours — the defining behaviour of
zoomvstransform: scale(). Both grids side by side to compare directly. -
Scroll Zoom Reveal
Cards start at
zoom: 0.7; opacity: 0and spring into view viatransition: zoom 0.5s cubic-bezier(0.34,1.56,0.64,1)when they enter the viewport. Becausezoomaffects layout, the spring-in physically shifts surrounding cards — a reveal effect impossible withtransform: scale(). Add cards dynamically and scroll to watch them pop in. -
Authoring Studio
Dial in zoom-from, zoom-to, duration, easing, and trigger via live sliders and see the result in a three-card layout that shows how the animated card physically pushes its neighbors. Generates a copyable CSS snippet using the exact values you chose.
-
Compatibility Lab
Runs six
CSS.supports()probes for animatable zoom (property, transition-property, percentages, live style check), renders a side-by-side hover comparison of the zoom path versus thetransform: scale()fallback, and provides a ready-to-copy@supports (transition-property: zoom)progressive-enhancement pattern.
why it shipped
CSS zoom has been a non-standard property supported across browsers for years, but it was not animatable — only transform: scale() could produce smooth scaling transitions. The key difference: zoom participates in layout (the zoomed element takes up its new scaled size in the document flow), while transform: scale() scales visually without affecting layout. Making zoom animatable unlocks smooth layout-affecting transitions previously impossible with pure CSS, complementing rather than replacing scale transforms.
references
implementation reference
Need the exact API surface, compatibility boundaries, errors, lifecycle, and source links? Read the matching gendn reference ↗