Как перезапустить css-переходы с помощью «touchstart» и «touchend»?

#javascript #css

#javascript #css

Вопрос:

У меня есть простой div, который имитирует волновой эффект material design вместе с событиями «touchstart» и «touchend». Но я не знаю, как перезапустить анимацию, если пользователь нажимает несколько раз.

       .test-ripple{
    position: relative;
    display: flex;
    align-items: center;
    width: 50px;
    height: 50px;
    overflow: hidden;
    border-radius: 50%;
   
  }
     .test-ripple:before {
        display: none;
      }
      .test-ripple:after {
        position: absolute;
        content: "";
        cursor: pointer;
        background-image: none;
        background-color: rgba(0, 0, 0, 0);
        width: 78%;
        height: 78%;
        border-radius: 50%;
        left: 0;
        right: 0;
        margin-left: auto;
        margin-right: auto;
        transform: scale(0.3);
        transition: linear 350ms forwards;
      }

      .test-ripple.ativo:after {
        background-color: rgba(0, 0, 0, 0.2);
        transform: scale(1);
        transition: 150ms;
      }
      .test-ripple.fade-out:after {
        background-color: rgba(0, 0, 0, 0);
        transition: 300ms;
      }

 
<div class="test-ripple">
    <i class="material-icons">add</i>
</div >

var ripple = document.querySelectorAll(".test-ripple")

        ripple.forEach((item) => {
          item.addEventListener("touchstart", () => {
            item.classList.add("ativo");

          });

          item.addEventListener("touchend", () => {
            setTimeout(function () {
              item.classList.add("fade-out");
              setTimeout(function () {
                item.classList.remove("ativo");
                item.classList.remove("fade-out");
              }, 150);
            }, 100);
          });
        });
  

Как сделать так, чтобы переход повторялся каждый раз, когда пользователь нажимает?

Ответ №1:

Хммм, с тем, что я видел до сих пор, у них нет специального кода для этого, просто напишите свой код, добавьте только одну функцию вызова из анимации для запуска, поэтому, когда пользователь снова нажмет, он обязательно перезапустится автоматически