gpt4 book ai didi

javascript - 如何依次播放不同的css动画?

转载 作者:太空狗 更新时间:2023-10-29 16:39:33 24 4
gpt4 key购买 nike

我正在尝试一个接一个地播放不同的 css 动画,但我不知道该怎么做。

基本上我想做的是播放一个动画,让它在屏幕上显示 15 秒,然后播放下一个,显示 15 秒,然后继续下一个,当最后一个播放完时,它应该从顶部重新开始。

这是它应该播放的第一个示例,显示 15 秒,然后继续播放下一个并执行相同的操作。

<style> #animated-example {
width: 300px;
height: 200px;
border: solid 1px #1A7404;
position: absolute;
background-color: #62A80A;
}

.animated {
-webkit-animation-duration: 2s;
animation-duration: 2s;
-webkit-animation-fill-mode: both;
animation-fill-mode: both;
}

@-webkit-keyframes bounceInLeft {
0% {
opacity: 0;
-webkit-transform: translateX(-2000px);
}
60% {
opacity: 1;
-webkit-transform: translateX(30px);
}
80% {
-webkit-transform: translateX(-10px);
}
100% {
-webkit-transform: translateX(0);
}
}

@keyframes bounceInLeft {
0% {
opacity: 0;
transform: translateX(-2000px);
}
60% {
opacity: 1;
transform: translateX(30px);
}
80% {
transform: translateX(-10px);
}
100% {
transform: translateX(0);
}
}

.bounceInLeft {
-webkit-animation-name: bounceInLeft;
animation-name: bounceInLeft;
}

</style>
<img id="animated-example" class="animated bounceInLeft" src="http://webmarketingtoday.com/wp-content/uploads/Screen-Shot-2012-05-24-at-7.31.54-AM-288x216.png">

然后运行另一个,显示 15 秒,然后继续。

<style> #animated-example {
width: 300px;
height: 200px;
border: solid 1px #1A7404;
position: absolute;
background-color: #62A80A;
}
.animated {
-webkit-animation-duration: 1s;
animation-duration: 1s;
-webkit-animation-fill-mode: both;
animation-fill-mode: both;
}
@-webkit-keyframes bounceInDown {
0% {
opacity: 0;
-webkit-transform: translateY(-2000px);
}
60% {
opacity: 1;
-webkit-transform: translateY(30px);
}
80% {
-webkit-transform: translateY(-10px);
}
100% {
-webkit-transform: translateY(0);
}
}
@keyframes bounceInDown {
0% {
opacity: 0;
transform: translateY(-2000px);
}
60% {
opacity: 1;
transform: translateY(30px);
}
80% {
transform: translateY(-10px);
}
100% {
transform: translateY(0);
}
}
.bounceInDown {
-webkit-animation-name: bounceInDown;
animation-name: bounceInDown;
}
</style>
<img id="animated-example" class="animated bounceInDown" src="https://www.facebookbrand.com/img/fb-art.jpg">

最佳答案

在纯 CSS 中实现这一点的唯一方法是同时运行所有动画并进行一些计算:

  • 每个动画的长度应该相同并且等于所需动画的总长度(意思是如果你想要两个 15 秒的动画,CSS 动画的长度应该设置为 30 秒,没有延迟)
  • 要控制每个动画的开始/结束点,您需要相应地修改百分比 - 在上面的例子中,这意味着第一个动画在 50% 结束,第二个动画开始的时间。此外,所有中间值都需要进行插值。两个动画很容易,但随着动画总数的增加,您可能需要使用计算器。这是如果我们不考虑延迟 - 当我们有一个 15 秒的动画将在 5 秒后完成动画时,数字会发生变化,现在等于 33%,等等...

一旦你在这里看到它的实际效果就会更加清楚:

.animated-example {
width: 300px;
height: 200px;
border: solid 1px #1A7404;
position: absolute;
background-color: #62A80A;
}

.animated {
animation-duration: 20s;
animation-fill-mode: both;
animation-iteration-count: infinite;
}

.bounceInLeft {
-webkit-animation-name: bounceInLeft;
animation-name: bounceInLeft;
}

.bounceInDown {
-webkit-animation-name: bounceInDown;
animation-name: bounceInDown;
}


@keyframes bounceInLeft {
0% {
opacity: 0;
transform: translateX(-2000px);
}
6% {
opacity: 1;
transform: translateX(30px);
}
8% {
transform: translateX(-10px);
}
10% {
transform: translateX(0);
}
40% {
opacity: 1;
transform: translateX(0);
}
42% {
opacity: 1;
transform: translateX(30px);
}
55% {
opacity: 0;
transform: translateX(-2000px);
}
100% {
opacity: 0;
transform: translateX(-2000px);
}
}



@keyframes bounceInDown {
0% {
opacity: 0;
transform: translateY(-2000px);
}
50% {
opacity: 0;
transform: translateY(-2000px);
}
56% {
opacity: 1;
transform: translateY(30px);
}
58% {
transform: translateY(-10px);
}
60% {
transform: translateY(0);
}
90% {
transform: translateY(0);
}
92% {
opacity: 1;
transform: translateY(30px);
}
100% {
opacity: 0;
transform: translateY(-2000px);
}
}
<img class="animated-example animated bounceInLeft" src="http://webmarketingtoday.com/wp-content/uploads/Screen-Shot-2012-05-24-at-7.31.54-AM-288x216.png">
<img class="animated-example animated bounceInDown" src="https://www.facebookbrand.com/img/fb-art.jpg">

关于javascript - 如何依次播放不同的css动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37343754/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com