Это потому, что вы применяете ту же анимацию к элементу при наведении, что и анимация, которая находится в состоянии элемента по умолчанию.
Таким образом, элемент уже имел эту анимацию с направлением по умолчанию, но затем вы применяете ееопять с обратным.Но это не сработает.Я действительно не знаю, почему это происходит.Но применение одной и той же анимации к элементу дважды не сработает.Таким образом, вам нужно 2 разных ключевых кадра.
Вы можете использовать reverse
анимацию или дублировать существующую и использовать ее с direction: reverse
Подробнее здесь перезапустить анимацию
подробнее здесь
еще одна статья здесь
Если вы ДЕЙСТВИТЕЛЬНО хотите использовать только 1 анимацию, это можно решить с помощьюjavascript, удалив и добавив класс «animate-me».Но это все равно не будет идеальным
div {
width: 100px;
height: 100px;
animation: fade 0.6s ease-in-out forwards;
margin: 15px;
display: inline-flex;
align-items: center;
justify-content: center;
color: white;
}
#box-1:hover {
animation: fade2 0.6s ease-in-out forwards;
animation-direction: reverse;
}
#box-2:hover {
animation: fadeReverse 0.6s ease-in-out forwards;
}
@keyframes fade {
0% { background: red; }
100% { background: blue; }
}
@keyframes fade2 {
0% { background: red; }
100% { background: blue; }
}
@keyframes fadeReverse {
0% { background: blue; }
100% { background: red; }
}
<div id="box-1">:(</div>
<div id="box-2">:)</div>