Я пишу код, который делает так, чтобы когда элементу присваивался класс, он кратковременно мигал.Для этого я создал анимацию от ее «выделенного» внешнего вида до его «невыделенного» внешнего вида, который применяется, когда элементу присваивается класс .highlight
.
Беда в том, что .highlight
класс обычно применяется только на очень короткий момент - он удаляется задолго до окончания анимации.Результатом этого является то, что элемент будет использовать свой «невыделенный» вид сразу после удаления класса.Но моя цель состоит в том, чтобы он завершил анимацию, постепенно переходя к невыделенному виду, хотя класс, который применяет эту анимацию, был удален.
Ниже приведен код, представляющий ситуацию, с которой я имею дело.Попробуйте нажать кнопку один раз, затем нажмите ее еще раз до завершения анимации;обратите внимание, что анимация отменена и немедленно используется «невыделенный» вид.
#foo {
background: blue;
color: white;
}
@keyframes unhighlight {
from {
background: red;
}
to {
background: blue;
}
}
#foo.highlight {
animation-duration: 5s;
animation-name: unhighlight;
}
<p id="foo">
Hello!
</p>
<button onclick="document.getElementById('foo').classList.toggle('highlight')">
Click
</button>
Поскольку на практике я пишу в контексте React, я бы предпочел не включать JavaScript в решение здесь (например, удаляя только .highlight
Класс, как только он обнаружит, что анимация закончилась) - было бы трудно включить в мой существующий код (на самом деле).