На самом деле, вы запускаете fading-out
все элементы одновременно, но с разными скоростями анимации.Если вы хотите затемнять их один за другим, используя одну и ту же скорость анимации, вам придется подождать, пока не закончится каждый fade-out
, прежде чем вызывать fadeOut()
для другого.В следующем примере я покажу, как обобщить (до X чисел последовательных элементов) эту анимацию, используя рекурсивную процедуру.
$(document).ready(function()
{
var fadeOutSpeed = 2000;
var fadeInSpeed = 3000;
var seqFadeOutThenFadeAllIn = function(elem)
{
// Check if exists a next element.
if (!elem.length)
{
// Fade-in all elements.
$(".custom-div").fadeIn(fadeInSpeed);
}
else
{
// Fade-out next element.
elem.fadeOut(fadeOutSpeed, function()
{
seqFadeOutThenFadeAllIn(elem.next(".custom-div"));
});
}
}
$('#divBTN').click(function()
{
// Start fading-out the first element in the set.
seqFadeOutThenFadeAllIn($(".custom-div").first());
});
});
.custom-div {
width: 70px;
height: 30px;
margin-bottom: 20px;
background-color: green;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<div id="div1" class="custom-div"></div>
<div id="div2" class="custom-div"></div>
<div id="div3" class="custom-div"></div>
<button id="divBTN">Click Me!</button>