Q24
★ ★ ★ ★ ★
CSS 动画与 JS 动画的性能区别?
⚡ 速记答案(30 秒)
CSS 动画浏览器可优化,尤其只改 transform/opacity 时可 GPU 合成,性能好。JS 动画灵活但频繁改 top/left/width 会触发布局重绘。简单动画用 CSS,复杂时间线用 JS + requestAnimationFrame。
📖 详细讲解
标准面试回答(推荐记住)
CSS 动画和 JS 动画在性能上有明显区别。CSS 动画浏览器可以进行优化,如果只改变 transform 和 opacity,可以完全在 GPU 合成线程中处理,不会触发布局和重绘,性能最好。JS 动画更灵活,可以配合业务逻辑,但如果频繁修改 top、left、width 这些属性,会触发布局计算和重绘,性能较差。最佳实践是:简单的位移、缩放、渐隐用 CSS;复杂的时间线、物理效果用 JS 配合 requestAnimationFrame。
✅ 面试要点
- •CSS 动画可 GPU 加速
- •JS 改布局属性会回流
- •简单用 CSS,复杂用 JS