Анимация и смена двух разных изображений - PullRequest
0 голосов
/ 20 сентября 2018

Есть два изображения: первое - лодка, второе - самолет.Желаемый результат: Лодка оживляет слева направо, в это время самолет скрыт.Когда лодка достигает середины экрана, она исчезает и появляется самолет.Это изменение должно произойти гладко.

.image1 {
  width: 259px;
  height: 259px;
  display: block;
  position: absolute;
  bottom: 135px;
  margin: auto;
  @include transition(all 1.2s);
  background-size: contain;
  -webkit-animation: helicopter-move-one 19s linear infinite;
  animation: helicopter-move-one 19s linear infinite;
  opacity: 1;
}

@-webkit-keyframes helicopter-move-one {
  0% {
    left: -300px;
  }
  60% {
    opacity: 0;
  }
  100% {
    left: 110%;
  }
}

@keyframes helicopter-move-one {
  0% {
    left: -300px;
    display: block;
  }
  59% {
    display: none;
  }
  60% {
    display: none;
  }
  100% {
    left: 110%;
  }
}
<div class="outer">
  <div class="image1"><img src="" alt="boat"></div>
  <div class="image2"><img src="" alt="plane"></div>
</div>

1 Ответ

0 голосов
/ 20 сентября 2018

Поскольку у меня нет ваших изображений, я использую собак.В этом случае «» желаемый результат: взрослая собака анимирует слева направо, в это время щенок прячется. Когда взрослая собака достигает середины экрана, она исчезает и появляется щенок. Это изменение должно происходить плавно. "Обратите внимание, что display не анимируется.Вам нужно анимировать opacity.

img {
  width: 150px;
  height: 150px;
}

[class ^="image"] {
  width: 150px;
  height: 150px;
  display: block;
  position: absolute;
  left: 0;
  right: 0;
  background-size: contain;
}

.image1 {
  z-index: 2;
  animation: daAnimation1 19s linear infinite;
}
.image2 {
  z-index: 1;
  margin: auto;
  left: 0;
  right: 0;
  opacity: 0;
  animation: daAnimation2 19s linear infinite;
}

@keyframes daAnimation1 {
  0% {
    left: -150px;
    opacity: 1;
  }
  45% {
    left: calc(50vw - 75px);
    opacity: 1;
  }
  50% {
    left: calc(50vw - 75px);
    opacity: 0;
  }
  100% {
    left: 110%;
    opacity: 0;
  }
}

@keyframes daAnimation2 {
  0% {
    opacity: 0;
  }
  45% {
    opacity: 0;
  }
  50% {
    opacity: 1;
  }
  100% {
    opacity: 1;
  }
}
<div class="outer">
  <div class="image1"><img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/222579/darwin300.jpg" alt="adult dog"></div>
  <div class="image2"><img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/222579/puppyBeagle300.jpg" alt="puppy"></div>
</div>

Я надеюсь, что это ответ на ваш вопрос.

ОБНОВЛЕНИЕ: это ответ на комментарий @Danish (см. Ниже)

img {
  width: 150px;
  height: 150px;
}

[class ^="image"] {
  position:absolute;
  background-size: contain;
}

.image1 {
  z-index: 2;
  opacity: 1;
  animation: daAnimation1 19s linear infinite;
}
.image2 {
  z-index: 1;
  opacity: 1;
  
}

.outer{
  width: 150px;
  height: 150px;
  display: block;
  position: absolute;
  animation: OuterAnimation 19s linear infinite;
}

@keyframes OuterAnimation{
 0% {
    left: -150px;
  }
 
  100% {
    left: 110%;
  }
}

@keyframes daAnimation1 {
  0% {
    opacity: 1;
  }
  45% {
    opacity: 1;
  }
  50% {
    opacity: 0;
  }
  100% {
    opacity: 0;
  }
}
<div class="outer">
  <div class="image1"><img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/222579/darwin300.jpg" alt="adult dog"></div>
  <div class="image2"><img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/222579/puppyBeagle300.jpg" alt="puppy"></div>
</div>
...