Не удается добиться оптимальной анимации
.sst {
display:flex;
align-items: center;
gap:15px;
height: 0;
overflow: hidden;
transition: 3s all ease-in-out;
}
.open .sst {
animation: opp .3s ease-in-out 1 normal forwards
}
@keyframes opp {
0% {padding-top:0; height: 0; opacity: 0}
to {padding-top:15px; height: unset; opacity: 1}
}
При наличии класса open, открываем блок, увеличиваем высоту по дочерним блокам, увеличиваем padding и opacity;
Добавляем класс open, анимация работает. Но как выполнить так, чтобы анимация была противоположной, удалив класс open и не добавляя новых?
Ответы (1 шт):
Автор решения: UserTest013
→ Ссылка
trigger.addEventListener('mouseenter', () => {
animation.style.display = 'flex';
animation.classList.add('open');
});
trigger.addEventListener('mouseleave', () => animation.classList.remove('open'));
#trigger {
background: lightsalmon;
}
.sst {
display: none;
align-items: center;
gap: 15px;
height: 0;
overflow: hidden;
transition: 3s all ease-in-out;
background: rosybrown;
animation: opp_up .3s ease-in-out normal forwards;
}
.sst.open {
animation: opp_down .3s ease-in-out normal forwards;
}
@keyframes opp_down {
from {
padding-top: 0;
height: 0;
opacity: 0;
}
to {
padding-top: 15px;
height: unset;
opacity: 1;
}
}
@keyframes opp_up {
to {
padding-top: 0;
height: 0;
opacity: 0;
}
from {
padding-top: 15px;
height: unset;
opacity: 1;
}
}
<div id="trigger">Hover me</div>
<div id="animation" class="sst"></div>