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