加载中...
通过 @keyframes 规则和 animation 属性在 CSS 中定义元素随时间变化的视觉效果,配合 transition 属性可实现状态切换过渡,现代浏览器对 CSS 动画有硬件加速支持,性能优于早期 JS 动画方案。
| 类型 | CSS 技术 |
| 核心属性 | transition、animation、@keyframes |
| 性能关键 | transform 和 opacity 走 GPU 合成 |
transition 用于两态之间的平滑过渡,必须由状态变化触发(如 hover、class 切换),定义简单:transition: all 0.3s ease。animation 通过 @keyframes 定义完整的动画序列,可以循环、暂停、反向播放,不依赖外部触发。
两者都支持 GPU 加速的属性:transform 和 opacity。改变 width、height、top、left 会触发重排(reflow),性能差;改变 transform: translateX() 只触发合成(compositing),流畅得多。这也是为什么动画应该尽量用 transform 而非改变位置属性。[1]
animation-timing-function 控制动画节奏:ease(默认,慢快慢)、linear、ease-in、ease-out,或自定义 cubic-bezier()。CSS 2023 新增的 linear() 函数可以用多点插值描述弹簧效果等复杂曲线,不再需要 JS 库。
| 类型 | CSS 技术 |
| 核心属性 | transition、animation、@keyframes |
| 性能关键 | transform 和 opacity 走 GPU 合成 |
登录 后参与讨论
暂无讨论,来发表第一条评论吧