The web-animations spec
says a property targeted by a current or in-effect animation should act as if
will-change includes it. Blink did this for opacity and transform,
but filter and backdrop-filter animations did not
establish a containing block for fixed / absolutely positioned descendants the
way will-change: filter does.
This only shows while the animation is current but not in effect -- most obviously during its start delay. A running filter animation applies a filter value every frame, so the element is already a containing block; only the delay exposes the missing side effect.
EXPECTED A position: fixed child inside an element with an active filter animation is contained by that element (positioned relative to it), matching will-change: filter.
ACTUAL (unpatched) The fixed child escapes to the viewport because the animated element is not treated as a containing block.
Each dashed amber box is an .ancestor holding a red
position: fixed child pinned to top:0; left:0. If the
ancestor is a containing block, the red box sits at its top-left; otherwise the
red box jumps to the viewport's top-left corner.
filter but is still in a 1h delay (no filter applied). Should behave like the baseline once the fix ships.