CSS 动画革命:视图过渡与滚动驱动动画
网页动画的方式正在发生根本性的转变。我们正在从简单的“悬停”过渡转向电影级的页面级过渡,以及直接响应用户滚动位置的动画——所有这些都无需像 GSAP 这样沉重的 JavaScript 库。
在本指南中,我们将探索让 Web 感觉更像原生应用的高性能动画特性。
2. 滚动驱动动画:有目的的运动
滚动驱动动画将动画的进度直接链接到用户的滚动位置。这是讲故事和交互式落地页的终极工具。
scroll() 函数
允许动画根据特定容器的滚动位置进行。
@keyframes progress-bar {
from { width: 0%; }
to { width: 100%; }
}
.progress {
animation: progress-bar linear;
animation-timeline: scroll(root block);
}
view() 函数
允许动画根据元素在视口中的可见性进行。这非常适合“滚动淡入”效果。
3. 微调运动:cubic-bezier 和 Spring
高质量的动画关乎时机。
cubic-bezier
允许您定义自定义的“缓动”曲线。您可以创建自定义的“弹跳”或“干脆”曲线,而不仅仅是 ease-in 或 ease-out。
.snappy-btn {
transition: transform 0.3s cubic-bezier(0.68, -0.6, 0.32, 1.6);
}
弹簧动画 (Spring Animations)(新兴)
新的 CSS 规范正在引入原生的基于弹簧的时间函数,允许符合物理定律(质量、刚度和阻尼)的运动,从而产生更自然的“有机”感觉。
4. 精通关键帧和过渡
虽然新特性令人兴奋,但基础仍然重要:
- @keyframes:定义动画的步骤(从 0% 到 100%)。
- transition:动画化属性更改(如
background-color或transform)的最简单方法。
专家提示:动画化 Transform 和 Opacity
为了确保 60fps 的性能,优先动画化浏览器可以在 GPU 上处理的属性:transform 和 opacity。
5. 使用 @scroll-timeline 进行时间轴控制
@scroll-timeline(及其较新的等效项)允许对多个动画进行粒度控制。您可以定义一个时间轴,然后将其应用于任意数量的元素,确保它们在用户滚动时保持完美同步。
动画工具总结
| 特性 | 最适用于 | 支持情况 |
|---|---|---|
| 视图过渡 | 平滑页面/状态导航 | Chrome, Edge |
| 滚动驱动 | 基于滚动的进度和效果 | 新兴 |
| cubic-bezier | 自定义、干脆或弹跳的缓动 | 通用 |
| 关键帧 | 复杂的、多步骤动画 | 通用 |
| transform | 高性能 (GPU) 运动 | 通用 |
结论
动画不再仅仅是“装饰”——它是用户体验中功能性的一部分。通过使用视图过渡和滚动驱动运动,您可以提供用户对现代数字产品所期望的反馈和连续性。
准备好开始动画了吗?查看我们的 CSS 动画生成器,并关注我们即将推出的 Cubic-bezier 游乐场 和 滚动驱动动画构建器!