Бесконечная анимация содержимого друг над другом с использованием ключевых кадров CSS

У меня есть следующее HTML а также CSS код:

.parent{
 height: 10%;
 width: 100%;
 float: left;
 position: relative;
}
 
.content1{
 height: 100%;
 width: 20%;
 background-color: blue;
 float: left;
 position: absolute;
}
 
 .content2{
 height: 100%;
 width: 20%;
 background-color: red;
 float: left;
 animation-delay: 1s;
  position: absolute;
}
 
 .content3{ 
 height: 100%;
 width: 20%;
 background-color:yellow;
 float: left;
 animation-delay: 2s;
 position: absolute;
}
 
.content4{
 height: 100%;
 width: 20%; 
 background-color: green;
 float: left;
 animation-delay: 3s;
 position: absolute;
}
 
 .content5{
 height: 100%;
 width: 20%;
 background-color: orange;
 float: left;
 animation-delay: 4s;
}
 
 
.parent div {
 animation-name: animation_01;
 animation-duration:2s;
 animation-iteration-count:infinite;
 animation-fill-mode: forwards;
 opacity:0;
 }


@keyframes animation_01 {
  0% {
    opacity: 0
  }
  50% {
    opacity: 1
  }
  100% {
    opacity: 0
  }
}
<div class="parent">
 <div class="content1">Here goes content1</div>
 <div class="content2">Here goes content2</div>
 <div class="content3">Here goes content3</div>
 <div class="content4">Here goes content4</div>
 <div class="content5">Here goes content5</div>
 </div>

Как вы можете видеть в коде, я отображаю 5 содержимого друг над другом, используя keyframes анимация. Я хочу запустить эту анимацию бесконечно, поэтому я ставлю animation-iteration-count:infinite;,

Однако, как только анимация достигает content5 это не возвращается к content1 и начинается все сначала. Вместо этого это только восходит к content4 а потом показывает / прячет content4 а также content5 в бесконечном цикле.

Что я должен изменить в своем коде, чтобы анимация вернулась к content1 и снова запускает анимацию?

1 ответ

Решение

Определите более длинную анимацию.

Продолжительность анимации в этом примере составляет 5 секунд, а видимый период времени - 2 секунды. Каждый div имеет различную задержку, поэтому, когда одно исчезает, другое начинает исчезать.

.parent {
  height: 10%;
  width: 100%;
  float: left;
  position: relative;
}

.parent div {
  animation-name: animation_01;
  animation-duration: 5s;
  animation-iteration-count: infinite;
  opacity: 0;
}

.content1 {
  height: 100%;
  width: 20%;
  background-color: blue;
  position: absolute;
  opacity: 1;
}

.content2 {
  height: 100%;
  width: 20%;
  background-color: red;
  animation-delay: 1s;
  position: absolute;
}

.content3 {
  height: 100%;
  width: 20%;
  background-color: yellow;
  animation-delay: 2s;
  position: absolute;
}

.content4 {
  height: 100%;
  width: 20%;
  background-color: green;
  animation-delay: 3s;
  position: absolute;
}

.content5 {
  height: 100%;
  width: 20%;
  background-color: orange;
  animation-delay: 4s;
}

.parent {}

@keyframes animation_01 {
  20% {
    opacity: 1
  }
  0%, 40% , 100% {
    opacity: 0
  }
}


}
<div class="parent">
  <div class="content1">Here goes content1</div>
  <div class="content2">Here goes content2</div>
  <div class="content3">Here goes content3</div>
  <div class="content4">Here goes content4</div>
  <div class="content5">Here goes content5</div>
</div>

Другие вопросы по тегам