У меня есть несколько элементов одного типа, и я хочу, чтобы они использовали одну и ту же анимацию CSS, но я хочу, чтобы они запускали / заканчивали анимацию в разное время.
Кодовый код для следующего кода
HTML:
<div class="container">
<div class="box hidden"></div>
</div>
<div class="container">
<div class="box hidden"></div>
</div>
<div class="container">
<div class="box hidden"></div>
</div>
CSS:
.container {
width: 100px;
height: 100px;
margin-bottom: 20px;
}
.box {
width: 100%;
height: 100%;
}
.box.hidden {
visibility: hidden;
}
.box {
animation: growIn 1s;
animation-timing-function: cubic-bezier(.46,.13,.99,.83);
transition: all .2s cubic-bezier(0.215, 0.61, 0.355, 1);
}
.container:first-child .box {
background-color: green;
}
.container:nth-child(2) .box {
background-color: orange;
}
.container:nth-child(3) .box {
background-color: red;
}
@keyframes growIn {
from {
transform: scale(0);
}
to {
transform: scale(1);
}
}
Элементы box
начинаются как скрытые, и затем, используя javascript, я удаляю это имя класса из разных полей, но в разное время:
const boxes = document.querySelectorAll(".box");
boxes.forEach(box => {
setTimeout(() => box.classList.remove("hidden"), Math.random() * 1000);
});
Что происходит, так это то, что все 3 блока заканчивают свою анимацию в одно и то же время. Анимация начинается в разное время, но все заканчивается вместе.
Почему это?
Если я делаю то же самое, но добавляю имя класса вместо его удаления (чтобы запустить анимацию), то оно ведет себя так, как я хочу.
Есть идеи? Спасибо.