Я уже давно имею дело с этой ошибкой и не могу понять, что делать.
У меня есть две простые CSS анимации для открытия и закрытия корзины.
.animate-close-cart {
animation: closeCart 0.2s 0s 1 linear forwards;
}
@keyframes closeCart {
from {
transform: translateX(-35%);
}
to {
transform: translateX(0);
}
}
.animate-open-cart {
animation: openCart 0.2s 0s 1 linear forwards;
}
@keyframes openCart {
from {
transform: translateX(0);
}
to {
transform: translateX(-35%);
}
}
после нажатия на кнопку моей корзины я добавляю или удаляю соответствующий класс:
Открытие корзины:
value: function _openMiniCart() {
var mainWrapper = document.getElementById("main_wrapper");
mainWrapper.classList.remove("animate-close-cart");
mainWrapper.classList.add("animate-open-cart");
}
Закрытие корзины:
value: function _closeMiniCart() {
var mainWrapper = document.getElementById("main_wrapper");
mainWrapper.classList.remove("animate-open-cart");
mainWrapper.classList.add("animate-close-cart");
}
Блок main_wrapper
оборачивается вокруг всей моей веб-страницы:
<body>
<div id="main_wrapper">
// header, template, page contents etc.
<div/>
</body>
Открывая корзину, в которой воспроизводится анимация, веб-страница перемещается к осталось показывать корзину. Отлично. При закрытии корзины проигрывается анимация, веб-страница перемещается назад вправо, скрывая корзину.
Затем ...
При повторном открытии веб-страницы просто прыгает без анимации влево, показывая корзину, но закрывая ее, она воспроизводит анимацию и движется обратно вправо.
При каждом открытии после первого начального открытия веб-страница всегда сразу переходит на -35%
.
Я не знаю, как отладить это или что может быть причиной этой проблемы.
edit:
С помощью CSS преобразуйте ту же ошибку, где она предлагает только плавный переход на первую открытую корзину, все другие открытые корзины сразу же перепрыгивают:
#main_wrapper {
transition: transform 0.2s;
}
.animate-close-cart {
transform: translateX(0);
}
.animate-open-cart {
transform: translateX(0);
}