入场与出场:让刚出现或将消失的元素也能过渡
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 路线的完整进出场。