Я не могу заставить мою анимацию работать плавно.
У меня есть иконка с изображением гамбургера с тремя делителями, например:
<div class="container">
<div class="burger-contain">
<div id="line-1" class="line"></div>
<div id="line-2" class="line"></div>
<div id="line-3" class="line"></div>
</div>
</div>
У меня есть три разных ключевых кадра для каждой строки.
.line:first-child {
animation-name: firstChild;
transform-origin: 30px 25px;
animation-duration: 0.5s;
animation-fill-mode: forwards;
margin: 10px;
}
Тогда ключевые кадры:
@keyframes firstChild {
0% {transform: translateY(0);}
50% {transform: translateY(10px);}
100% {transform: rotate(-45deg);}
}
Все три имеют немного различную анимацию.Ребенок два только исчезает, а ребенок три идет вверх, а не вниз.
Чтобы сделать функцию щелчка, я использую jquery для добавления / удаления классов следующим образом:
$(document).ready(function(){
var line = $(".line");
var burger = $(".burger-contain")
var toggled = false;
burger.click(function(){
triggerAnimation();
});
function triggerAnimation(){
if (toggled === false){
line.removeClass("reverse");
line.addClass("animate");
toggled = true;
} else {
line.removeClass("animate");
line.addClass("reverse");
toggled = false;
}
}
});
Тогда я планировал изменить анимацию так, чтобы использовать CSS animation-direction: reverse;
следующим образом:
.line:first-child.reverse {
animation-name: firstChild;
transform-origin: 30px 25px;
animation-duration: 0.5s;
animation-fill-mode: forwards;
margin: 10px;
animation-direction: reverse;
}
Снова по всем трем строкам.
Однако проблема заключается в том, что пока первая анимация идет нормально.Во второй раз это перестает анимировать все вместе.Между состояниями Бургера и Креста нет перехода.Как вперед-назад, так и анимацию можно использовать только один раз.
Моя логика неверна или я неправильно понимаю использование обратной анимации?