我正在使用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;
}


请修复我的代码...

最佳答案

编辑仅适用于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 {
  visibility: hidden;
}

.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>

10-07 14:29
查看更多