入场与出场:让刚出现 / 将消失的元素也能过渡
transition 需要「旧值」才能补间,这给入场和出场各留了一个坑。入场:元素刚插入 DOM(或从 display:none 现身)时没有上一帧,过渡不触发——@starting-style 专门提供这个起始帧。出场:元素一旦
display:none 就立刻消失、根本来不及播——transition-behavior: allow-discrete 让 display 这类离散属性也参与过渡,把「变 none」推迟到过渡结束。两者合起来,就有了完整的进入 / 退出生命周期。
三件套各管一段:@starting-style 给「从无到有」那一帧的起点(没有它入场不动);transition-behavior: allow-discrete 让 display 能参与过渡(没有它出场会瞬间消失);过渡列表里把 display(及 top-layer 的
overlay)一并列上,浏览器才知道延后那次离散翻转。与 CSS Animation 的 starting-style 页相比,那边对照 transition 版与 @keyframes 版、并细讲 discrete 动画类型;这里聚焦 transition 路线的完整进出场。