Я уверен, что это, должно быть, задавали раньше, и я нашел связанные вопросы, но я, кажется, не могу взломать это.
У меня есть элемент, который получает класс, и, при этом, расширяется.Позже, когда этот класс будет удален, он должен вернуться (оживить) обратно к своей первоначальной ширине.
let el = document.querySelector('#side-bar');
el.addEventListener('click', evt => el.classList.toggle('contracted'));
#side-bar {
height: 100%;
width: 75px;
background: red;
position: fixed;
left: 0;
top: 0;
}
#side-bar.contracted {
animation: .5s side-bar-contract forwards;
}
#side-bar:not(.contracted) {
animation: .5s side-bar-expand forwards;
}
@keyframes side-bar-expand {
to {
width: 350px;
}
}
@keyframes side-bar-contract {
to {
width: 75px;
}
}
<div id='side-bar' class='contracted'></div>
Анимация расширения работает отлично.Но анимация реверсии не происходит;он просто возвращается к своим первоначальным свойствам, без анимации.
Fiddle
Что я делаю не так?
[EDIT]
Хорошо, я должен был, очевидно, упомянуть, почему я не делаю это с transition
.Это часть более широкого набора зависимых анимаций, которые запускаются в последовательности, одна за другой.Насколько я понимаю, такого рода хронологически нетривиальная ситуация лучше для animation
, чем transition
.