#html #css #css-animations
#HTML #css #css-анимации
Вопрос:
Я хотел бы анимировать 2 изображения с помощью css, при этом 1 запускается и остается на 5 секунд, а другой следует, и они оба остаются еще на 5 секунд вместе, и все это начинается снова в бесконечном цикле. Я делаю это один раз, но как только он проходит через первый цикл, все они анимируются одновременно без второй задержки изображений. Пожалуйста, просмотрите мой код ниже:
CSS:
img.coke {
position: relative;
animation-name: FadeInOut;
animation-duration: 10s;
animation-iteration-count: infinite;
animation-timing-function: ease-in-out;
}
img.fanta {
position: relative;
opacity:0;
animation-name: FadeIn;
animation-duration: 5s;
animation-delay: 5s;
animation-iteration-count: infinite;
animation-timing-function: ease-in-out;
}
@keyframes FadeInOut {
0% {
opacity:0;
}
50% {
opacity:1;
}
100% {
opacity:1;
}
}
@keyframes FadeIn {
0% {
opacity:0;
}
100% {
opacity:1;
}
}
HTML:
<div id ="imgo">
<img class = "coke" src="http://media.wktv.com/images/AP_985452110986.png" />
<img class ="fanta" src="http://www.coca-colaproductfacts.com/content/dam/productfacts/us/productDetails/ProductImages/Fanta_12.png" />
</div>
Ответ №1:
Как вы заметили, animation-delay
работает только для задержки времени запуска анимации:
Указывает, когда должна начаться анимация. Это позволяет последовательности анимации начинаться через некоторое время после ее применения к элементу.
Но вы можете использовать логику, которая у вас уже есть, контролируя состояние непрозрачности на основе %
анимации:
img {
max-height: 200px;
}
img.coke {
position: relative;
animation: FadeInOut 2s infinite alternate ease-in-out;
}
img.fanta {
position: relative;
opacity: 0;
animation: FadeIn 2s infinite alternate ease-in-out;
}
@keyframes FadeInOut {
0% {
opacity: 0;
}
50% {
opacity: 1;
}
100% {
opacity: 1;
}
}
@keyframes FadeIn {
50% {
opacity: 0;
}
100% {
opacity: 1;
}
}
<div id="imgo">
<img class="coke" src="http://media.wktv.com/images/AP_985452110986.png" />
<img class="fanta" src="http://www.coca-colaproductfacts.com/content/dam/productfacts/us/productDetails/ProductImages/Fanta_12.png" />
</div>
Ответ №2:
.coke {
height: 100px;
opacity: 0;
-webkit-animation: example1 10s infinite; /* Safari 4 */
-moz-animation: example1 10s infinite; /* Fx 5 */
-o-animation: example1 10s infinite; /* Opera 12 */
animation: example1 10s infinite; /* IE 10 , Fx 29 */
}
.fanta {
height: 100px;
opacity: 0;
-webkit-animation: example2 10s infinite; /* Safari 4 */
-moz-animation: example2 10s infinite; /* Fx 5 */
-o-animation: example2 10s infinite; /* Opera 12 */
animation: example2 10s infinite; /* IE 10 , Fx 29 */
}
/* Safari 4.0 - 8.0 */
@-webkit-keyframes example1 {
10% {opacity: 0;}
15% {opacity: 1;}
100% {opacity: 1;}
}
/* Standard syntax */
@keyframes example1 {
10% {opacity: 0;}
15% {opacity: 1;}
100% {opacity: 1;}
}
/* Safari 4.0 - 8.0 */
@-webkit-keyframes example2 {
45% {opacity: 0;}
50% {opacity: 1;}
100% {opacity: 1;}
}
/* Standard syntax */
@keyframes example2 {
45% {opacity: 0;}
50% {opacity: 1;}
100% {opacity: 1;}
}
Попробуйте манипулировать процентами анимации
Пример: https://jsfiddle.net/o4226gmd