【发布时间】:2018-11-27 09:04:33
【问题描述】:
我最近玩了很多 CSS 动画。我在 CSS 动画中遇到的最大问题是动画计时功能。我的问题是该函数应用于关键帧的每个部分。我的意思是,如果我有一个作用于 div 的多步动画:
@keyframes moveProjectTop{
0%{
transform: translateX(0px) translateY(0px) rotateZ(0deg);
}
50%{
transform: translateX(125px) translateY(30px) rotateZ(30deg);
}
100%{
transform: translateX(250px) translateY(60px) rotateZ(0deg);
}
}
我希望从这种转换中获得平移运动的弹跳效果,但我希望旋转没有。我认为 CSS 不可能做到这一点。
我之所以相信这一点,是因为:
1:变换不能被分割成两个动画,这意味着所有的变换都必须在 1 个关键帧动画之下。
2:动画定时功能在每一步之间应用。
我认为解决方案与我的第二个细节有关。有没有办法让计时功能应用于整个动画,而不是在每个步骤之间(两个百分比之间)。另一种解决方案是,如果有一种方法可以在每个步骤之间应用不同的计时功能,就像我可以在 0%-50% 之间应用缓入,在 50%-100% 之间应用缓出,那么这个会模仿缓入出功能。
有没有人建议我如何通过这两种方式之一来平滑动画?
【问题讨论】:
-
请注意,即使链接的问题是关于属性的
-webkit版本,也是同样的问题。正确答案是:不能用 CSS 完成。您需要通过自己进行数学运算来正确拆分计时函数(这对于复杂的三次贝塞尔计时函数几乎是不可能的),或者您可以查看 Javascript 库(即velocity.js)或Web Animations API(其中仍然有support limitations)。
标签: css css-animations