如果你熟悉CSS的Animation,那么一定熟悉关键帧动画。在Framer-motion中,也是可以实现类似关键帧动画的效果的。
想要在motion元素上实现关键帧动画,关键就是要在设置属性的变化的值时,采用数组的方式,比如像这样:
通过数组的形式分段,理论上是可以无限分的。注意每个分段的变化时长,默认情况下是平均分,比如duration设置的是1秒,向上面这个案例,那么0-200变化是0.5秒,200-0变化是0.5秒。
关键帧动画的逻辑,其实就是让元素属性分多个阶段(目标变化),很多时候我们就是用来做这种让元素进行变化之后,然后又反向变化回一开始的状态的动画效果。
有时候,我们也会配合变化设置中repeat以及repeatType来实现一直重复变化的效果,很多时候这样的效果我们在做一些简单的loading加载动画的就会用到。
但是我们可以设置一个transition中的属性times,来手动设定每个分段的时长(transition设置的内容中我们已经介绍过的)。
times
过渡时间的分段
0-1数字组成的数组,最后一个肯定是1
配合关键帧动画模式的写法,对duration的值进行划分,让每一段动画都对应自己的变化时长
而且,我们还可以手动的设置不同分段变化的ease曲线,同样要用数组:
在motion元素中,设置关键真动画,可用null开头,比如像下面这样:
通过给数组的第一个数据设置null,元素的关键帧动画,会从元素该关键帧开始执行的当时的元素相应的属性的值为起始值,这样会让元素的整个关键帧动画启动时更自然,所以很多时候可以采用这样的方式来写关键帧动画。