答案:使用max-height配合transition可避免动画跳跃。因height: auto无法计算中间状态,导致动画跳变;通过设置合理max-height值(如500px),结合overflow: hidden与ease-in-out过渡,实现平滑展开折叠。

这里是可展开的内容。
内容行 2
内容行 3
问题:为什么 height 和 max-height 动画会“跳跃”?
立即学习“前端免费学习笔记(深入)”;
直接对 height 使用 transition 时,如果目标高度是 auto,浏览器无法计算中间状态,导致动画失效或瞬间跳变。max-height 虽然可以过渡,但如果设置过大(如 9999px),动画时间会不自然;设置过小,则内容被截断。
使用 max-height 实现平滑展开折叠
核心思路:用一个合理的 max-height 替代 height: auto,配合 transition 控制过渡效果。关键技巧:
- 将 max-height 设置为足够容纳内容的最大值(如 500px),但不要过大
- transition 使用 ease-in-out,让展开和收起更自然
- 配合 overflow: hidden 隐藏超出部分
- 初始状态 max-height: 0,隐藏内容
优化建议
如果内容高度动态变化大,可:
- 用 JavaScript 动态计算真实高度,在展开前设置对应的 max-height
- 或使用 transform + 定高容器模拟动画(适合固定子元素)
- 考虑 CSS @property(现代浏览器)实现真正 height: auto 过渡
基本上就这些,合理设置 max-height 能有效避免动画跳跃,实现视觉平滑的展开折叠效果。










