我如何检测完成fadeoutAnim并调用函数?

问题描述 投票:0回答:1

我正在使用jquery,并且想制作类似敬酒的消息。

因此,如果“ show”类追加到div,则吐司消息将淡入,并在几秒钟后淡出。

我必须完成淡出动画,删除“显示”类。

这是我的第一个代码。

var showToast = function(msg) {
     clearTimeout(window.timeoutToast);

     $("toastDiv p").html(msg);
     $("toastDiv").addClass("show");
     window.timeoutToast = setTimeout(function() {
         $("toastDiv").removeClass("show")
     }, 3000);
 };

我尝试调用clearTimeoutFunc和removeClass显示类。

但是如果我快速单击多个,则toastMessage淡出,并在眨眼时显示。...

[我也尝试过$(“ toastDiv”)。on(“ animationed webkitAnimationEnd oAnimationEnd MSAnimationEnd”,function(){...})但是,当淡入淡出动画完成后,就会调用该函数。

首先,我的html代码

<div class="toastDiv">
    <p class="txt_toast">blablabla</p>
</div>

和我的CSS

.toastDiv.show{
     visibility: visible;
     -webkit-animation: fadein 0.5s, fadeout 0.5s 2.5s;
     animation: fadein 0.5s, fadeout 0.5s 2.5s;
}

请修复我的代码...

javascript jquery css webkit
1个回答
1
投票

仅针对JS编辑的解决方案:

var showToast = function(msg) {
  clearTimeout(window.timeoutToast);

  $(".toastDiv p").html(msg);
  $(".toastDiv").addClass("show");

  $(".toastDiv").on('animationend', function(event) {
    var animation = event.originalEvent.animationName;
    if (animation === 'fadeout') {
      $(".toastDiv").removeClass("show");
    }
  });
};

showToast('I am toasted!');
@keyframes fadein {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

@keyframes fadeout {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}

.toastDiv {
  opacity: 0;
}

.toastDiv.show{
     visibility: visible;
     -webkit-animation: fadein 0.5s, fadeout 0.5s 2.5s;
     animation: fadein 0.5s, fadeout 0.5s 2.5s;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="toastDiv">
  <p class="txt_toast">blablabla</p>
</div>
© www.soinside.com 2019 - 2024. All rights reserved.