JSFiddle - React, Tailwind, and code Playground
HTML
<link rel="stylesheet" href="//stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css">
<script src="//cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js"></script>
<script src="//stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="alert-auto-close" class="alert alert-success alert-dismissible fade show">You have been successfully logged out!
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
JavaScript
var alertBox = $('#alert-auto-close');
var slideOut = function(){
alertBox.slideUp(500).animate({
'opacity': 0
}, {
'duration': 2000,
'queue': false,
'complete': function(){
$(this).remove();
}
});
};
var overAlert = false;
var t = null;
alertBox.on('mouseover', function(){
$(this).stop(true);
overAlert = true;
}).find('.close').on('click', function(){
overAlert = false;
alertBox.off('mouseover mouseleave');
window.clearTimeout(t);
slideOut();
});
t = window.setTimeout(function(){
if(!overAlert) {
slideOut();
}
alertBox.on('mouseleave', slideOut);
}, 4000);