Флип-карты в последовательном порядке - PullRequest
0 голосов
/ 01 октября 2019

У меня есть набор из 3, и каждая из них содержит 4 карты.

У меня есть 2 класса

card-in> покажет, что карта была поднята, card-out> покажетскрытая карта

Ни один из этих классов не скрывает элемент, они только выполняют анимацию.

Чтобы скрыть карту, я использую класс скрытой карты

Также поведение должно быть следующим:

Как только одна карта скрыта, должна начать появляться первая из другой группы, а вторая начинает исчезать и т. Д.

Таким образом, это будет примерно так:

- Карта 1 начинает анимацию с классовой картой-аутом - Как только Карта 1 заканчивается, новая карта должна занять свое место с картой-картой - Старая карта 2должно начаться исчезновение (извлечение карты) после исчезновения Карты 1.

<section class="cards-group cards-group-1 is-active">
  <div class="card-item card-in"> </div>
  <div class="card-item card-in"> </div>
  <div class="card-item card-in"> </div>
  <div class="card-item card-in"> </div>
</section>
<section class="cards-group cards-group-2">
  <div class="card-item card-out card-hidden"> </div>
  <div class="card-item card-out card-hidden"> </div>
  <div class="card-item card-out card-hidden"> </div>
  <div class="card-item card-out card-hidden"> </div>
</section>

Этот код я использую для отображения следующих 4 карт

      let activeCard = $('.cards-group.is-active');

      flipCardsActive(activeCard);
      activeCard
        .toggleClass('is-active');
      flipCardsInactive(activeCard.prev('.cards-group'));

      activeCard
        .prev('.cards-group')
        .toggleClass('is-active');

  function flipCardsActive(cardGroup, onEnd) {
    cardGroup.children('.card-item').each(function(i){
      let row = $(this);
      row.toggleClass('card-in');
      row.toggleClass('card-out');
      setTimeout(function() {
        row.toggleClass('card-hidden');
      }, 300*i);
    });
  }

  function flipCardsInactive(cardGroup) {
    cardGroup.children('.card-item').each(function(i){
      let row = $(this);
      row.toggleClass('card-out');
      setTimeout(function() {
        row.toggleClass('card-hidden');
        row.toggleClass('card-in');
      }, 300*i);
    });
  }

Проблема, с которой я столкнулся,карточная анимация. Почему-то я этого не вижу. Карты просто скрываются, а анимация теряется.

Я не могу использовать animate (), поскольку он не принимает классы Css.

Я понимаю, что мне следует использовать либо Очередь () или функции обратного вызова, но я недостаточно знаком или даже не уверен, что правильно их понимаю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...