You should only animate GPU-accelerated properties (transform, opacity) if you care about performance and responsiveness, or in the worst case some properties that trigger paint (color, backgroundColor, etc.).
https://bugs.chromium.org/p/chromium/issues/detail?id=20574
It's really fun because even a will-change: transform will trigger it.
This will leave a gap below the elements
> If all elements are same height, or the height is known beforehand you can just hardcode that translate value into the animations.
The problem is that there's rarely if ever a case when you know the height of all elements on a page :(
Recursively apply same logic to rest of page!