Может кто-нибудь объяснить, почему следующий код не работает без setTimeout?
<html>
<script src="js/jquery.js"></script>
<style>
div {
height:400px;
background-color:red;
opacity:1;
transition:1s;
}
</style>
<div id="foo">toto</div>
<script>
$("#foo").css("transition","0s");
$("#foo").css("opacity",0);
setTimeout(function(){
$("#foo").css("transition","5s");
$("#foo").css("opacity",1);
},1);
</script>
</html>
Предполагается, что сценарий сбрасывает непрозрачность div до 0, а затем постепенно достигает максимальной непрозрачности через 5 секунд.Без таймера нет анимации: непрозрачность равна 1. Я знаю, что я мог бы использовать кадры для анимации, но это было первое, что выходило у меня из головы в то время, и теперь мне интересно, почему это не работает (безтаймер)
рабочий (с таймером)
$("#foo").css("transition","0s");
$("#foo").css("opacity",0);
setTimeout(function(){
$("#foo").css("transition","5s");
$("#foo").css("opacity",1);
},1);
div {
height:400px;
background-color:red;
opacity:1;
transition:1s;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<div id="foo">toto</div>
Не работает
$("#foo").css("transition","0s");
$("#foo").css("opacity",0);
$("#foo").css("transition","5s");
$("#foo").css("opacity",1);
div {
height:400px;
background-color:red;
opacity:1;
transition:1s;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<div id="foo">toto</div>