处理transition时,先确认真正讨论的是transition 触发后内容突然消失或只闪一下、为什么 transform 动画特别容易被裁?、哪些替代方案能避开裁剪副作用?,再顺着问题展开。
transition 本身不会导致裁剪,但与 overflow: hidden 搭配时,因 transform 不改变文档流,浏览器仍按原始坐标系裁剪,致动画中途被截断;解决方案包括将动画元素移出裁剪容器、改用 max-height 过渡或父容器设为 display: flow-root;transition 本身不会导致裁剪,但和 overflow: hidden 搭配时,动画过程会暴露裁剪边界 —— 尤其当元素用 transform 移出原位置,却仍被父容器的裁剪框锁死。transition 触发后内容突然消失或只闪一下 这是最常见现象:比如选取展开菜单,transform: translateY(0) 动画执行中,内容刚滑到一半就“断掉”了;根本原因不是 transition 写错了,而是父容器设定了 overflow: hidden,而菜单又用了 position: absolute 或脱离文档流的 transfor;transform 不改变文档流位置,所以浏览器仍以元素原始坐标系计算溢出 —— 但它又真实改变了渲染位置,这就让 overflow: hidden 的裁剪行为变得“不可见但强硬”。例如:.menu { transform: translateY(-100%);} 默认藏在上面,选取后加 .open .menu { transform: translateY(0);} —— 如果父容器是 overflow: hidden,那整个滑入过程都在裁剪框内发生。