原文地址:Do you still need Framer Motion? - Motion One Blog
文章作者是 Framer Motion 和 Motion One 的作者,在这篇文章中他讨论了 CSS 动画相关的最新进展,以及这些进展是否减少了对 Framer Motion 的需求。他举例了五个新的CSS动画属性来与 Framer Motion 的实现进行对比
进入动画
CSS
CSS 新增了 @starting-style
,可以定义元素渲染后的起始样式。
Framer Motion
独立的变换
CSS
CSS新增了 translate
、scale
和 rotate
的简写属性,可以对这些属性进行单独的设置,而不需要通过 JS 拼接字符串的形式来实现某个属性的动画
另外可以通过 @property
在变量上提供一些类型信息给浏览器
Framer Motion
弹簧动画
CSS
新增了 linear() 函数,可以模拟弹簧效果。它与 linear
(无括号)属性不同,linear()
函数接受一系列点,并在他们之间线性插值,提供足够的点,他们可以绘制弹簧的缓动曲线,或者弹跳和其他任何自定义的曲线。
Framer Motion
滚动链接动画
CSS
CSS 引入了 scroll()
和 view()
动画时间线,可以实现滚动链接动画。任何一个都可以分配给 animation-timeline
样式,以通过滚动进度驱动动画,而不是时间
两者之间的区别在于 scroll()
用于跟踪视口可滚动元素的滚动进度,而 view()
用于检测元素在通过视口/元素时的进度。
新时间轴的好处在于,当样式动画可以进行硬件加速时,比如 transform
或 opacity
,这些动画动画也讲完全在主线程之外运行,确保滚动动画保持流畅。
Framer Motions
布局动画
CSS
CSS 的 View Transitions API 可以原生的在两个视图之间进行动画过渡
Framer Motion
结论
尽管 CSS 新增了一些功能, Framer Motion 仍然在某些地方存在优势,例如 API的简介性、动画的精确控制、可中断、复杂时间序列、退出动画等。
作者认为,Framer Motion 在一些地方仍然具有相当大的优势,并且提供了许多 CSS 尚未实现的功能。因此,尽管 CSS的新特性改变了一些情况,但作者仍然推荐使用 Framer Motion,特别是那些寻求更高级动画功能和更好动画体验的开发者。