如何使用css实现过渡和动画(关键帧之间暂停的CSS关键帧动画)

如何使用css实现过渡和动画(关键帧之间暂停的CSS关键帧动画)(1)

地球围绕太阳运行,关键帧与关键帧之间暂停

你有没有想过如何在动画开始时暂停动画?

我们可以使用animation-delay属性但它只会延迟动画的开始,一旦动画开始它将持续动画。一旦CSS关键帧动画开始,除非我们使用javascript,否则我们无法暂停它。那么我们如何让动画在关键帧之间暂停呢?

解决方案是使关键帧具有相同的值和一些数学。(什么!?数学!?)是的,以便准确计时我们的关键帧。


如何使用css实现过渡和动画(关键帧之间暂停的CSS关键帧动画)(2)

布局动画

例如上面的图像,它动画为1秒,暂停2秒,迭代4次。


首先,我们需要获得动画的总时间。

总时间=(动画时间 动画暂停)*迭代次数

总时间 =(动画时间 动画暂停)迭代次数

总时间 =(1s 2s) 4

总时间 = 12s


计算动画关键帧的百分比(%)

动画时间(%)=(动画时间/总时间)* 100

动画暂停(%)=(动画暂停/总时间)* 100

动画时间(%) =(动画时间/总时间)* 100

动画时间(%) =(1/12)* 100

动画时间(%) = 8.33%(8.33%= 1s的时间)

动画暂停(%) =(动画暂停/总时间)* 100

动画暂停(%) =(2/12)* 100

动画暂停(%) = 16.67%(16.67%= 2s的时间)


初始化动画关键帧的百分比(%)值

我们现在将通过添加动画时间和动画暂停百分比来初始化百分比值,然后将其递增直到第4次迭代。

0%(0s) 8.33%(1s animate) = 8.33%(1s)

8.33%(1s) 16.67%(2s pause) = 25%(3s) [1st iteration]

25%(3s) 8.33%(1s animate) = 33.33%(4s)

33.33%(4s) 16.67%(2s pause) = 50%(6s) [2nd iteration]

50%(6s) 8.33%(1s animate) = 58.33%(7s)

58.33%(7s) 16.67%(2s pause) = 75%(9s) [3rd iteration]

75%(9s) 8.33%(1s animate) = 83.33%(10s)

83.33%(10s) 16.67%(2s pause) = 100%(12s) [4th iteration]

现在我们有,

0%→8.33%→25%→33.33%→50%→58.33%→75%→83.33%→100%

如何使用css实现过渡和动画(关键帧之间暂停的CSS关键帧动画)(3)

初始化动画关键帧的百分比(%)值


Lezz在行动中做到这一点

total time = 12s

animation time (%) = 8.33% (8.33% = 1s of the time)

animation pause (%) = 16.67% (16.67% = 2s of the time)*

动画关键帧的百分比0%→8.33%→25%→33.33%→50%→58.33%→75%→83.33%→100%

由于动画旋转360度,我们有4次迭代。

keyframe value = 360/4 = 90度

** 每次迭代我们有90度,为了在每次迭代中得到,然后我们将它递增90度**。

0度 90度 = 90度[1次迭代]

90度 90度 = 180度[2次迭代]

180度 90度 = 270度[3次迭代]

270度 90度 = 360度[4次迭代]

现在我们有,

0度→90度→180度→270度→360度 [每次迭代]

现在我们已经拥有了所需的所有值,让我们将它添加到我们的代码中。

.planet{ animation: rotateEarth 12s infinite } @keyframes rotateEarth { 0% { transform: rotate(0deg) } 8.33% { transform: rotate(90deg) } 25% { transform: rotate(90deg) } 33.33% { transform: rotate(180deg) } 50% { transform: rotate(180deg) } 58.33% { transform: rotate(270deg) } 75% { transform: rotate(270deg) } 83.33% { transform: rotate(360deg) } 100% { transform: rotate(360deg) } }

正如您在上面的代码中看到的,有一些关键帧具有相同的值。我们可以用逗号分隔具有相同值的关键帧来编写更少的代码。

@keyframes rotateEarth { 0% { transform: rotate(0deg) } 8.33%, 25% { transform: rotate(90deg) } 33.33%, 50% { transform: rotate(180deg) } 58.33%, 75% { transform: rotate(270deg) } 83.33%, 100% { transform: rotate(360deg) } }


这就是全部。希望您能够在关键帧之间暂停创建动画。

感谢您抽出时间阅读我的文章。

希望本文能帮助您完成Web开发之旅。

译自:https://codeburst.io/css-keyframe-animation-with-pause-between-keyframes-50a3b3d14354

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页