Функция .fadeOut()
для jQuery имеет длительность и полный параметр. Параметр complete может быть функцией, которая вызывается всякий раз, когда затухание заканчивается. Таким образом, вы можете сделать что-то после завершения fadeOut, как и fadeIn, который вы хотите.
См. Пример ниже.
var $navbar = $(".navbar");
$(window).scroll(function() {
var scroll = $(window).scrollTop();
if (scroll >= 100) {
$navbar
.removeClass("navbar-dark")
.stop(true, true)
.fadeOut("fast", function() {
$navbar
.addClass("navbar-light bg-light")
.fadeIn("slow");
});
} else {
$navbar
.removeClass("navbar-light bg-light")
.stop(true, true)
.fadeOut("fast", function() {
$navbar
.addClass("navbar-dark")
.fadeIn("slow");
});
}
});
Но я бы рекомендовал по этой причине использовать CSS переходы, поскольку с ними гораздо проще работать и, что самое главное, более производительно, чем jQuery с постепенным увеличением и уменьшением.
Edit
Как и предположил Роко, вы следует использовать функцию .stop()
, чтобы остановить любую текущую анимацию на элементе, где выполняется fadeIn
или fadeOut
.