v150 · CSS · Animation

Compatibility Lab

Runs CSS.supports() probes for animatable zoom, shows the layout difference versus the transform: scale() fallback, and provides a progressive-enhancement pattern that uses zoom transitions where available and gracefully falls back to scale.

browser support probes

live comparison — hover the card

Hover card B in each row. Zoom expands layout; scale leaves neighbors frozen.

Code: zoom (supported) vs transform: scale (fallback)
✓ Chrome 150+ (animatable zoom)
.card { zoom: 1; transition: zoom 0.35s ease; } .card:hover { zoom: 1.4; }
⚠ Fallback (transform: scale)
.card { transform: scale(1); transition: transform 0.35s ease; } .card:hover { transform: scale(1.4); /* ⚠ layout box unchanged — neighbors don't move */ }

progressive enhancement pattern

/* Progressive enhancement: zoom where supported, scale as fallback */ .card { /* Fallback — works everywhere */ transform: scale(1); transition: transform 0.35s cubic-bezier(0.34,1.56,0.64,1); } .card:hover { transform: scale(1.4); } /* Override with zoom where animatable zoom is supported (Chrome 150+) */ @supports (transition-property: zoom) { .card { transform: none; zoom: 1; transition: zoom 0.35s cubic-bezier(0.34,1.56,0.64,1); } .card:hover { transform: none; zoom: 1.4; } }

implementation reference

Need the exact API surface, compatibility boundaries, errors, lifecycle, and source links? Read the matching gendn reference ↗