As far as I understand, this is roughly how iOS UI works (UIView - CALayer).
Obviously, this can be done at the browser engine level.
I have also tried to do this in my pet UI engine, but found out that it was tricky to figure out caching rules to avoid memory blowup and performance degradation for all possible cases.