У меня есть два div. Один отображается, а другой скрыт (с помощью display: none). Когда я нажимаю на первый div, он должен медленно исчезать (сделанный с переходом: непрозрачность), а затем используя javascript setTimeout, я делаю его отображаемым: none и в это время помещаю второй div-дисплей: блокируем и добавляем его класс (который делает его видимым с переход: непрозрачность). Возникает вопрос: почему первый div имеет желаемый эффект (медленно исчезает), а второй div сразу же отображается после этого (эффект перехода в этом случае не работает).
HTML
<body style="border:1px solid black">
<div class="square red show" ></div>
<div class="square blue" style="display:none"></div>
</body>
Css
.square{
opacity:0;
transition: opacity 1s linear;
}
.square.show{
opacity:1;
transition: opacity 1s linear;
}
.red{
background-color:red;
}
.blue{
background-color:blue;
}
Js
$('.red').click(function(){
$(this).removeClass('show');
setTimeout((function(p){return function(){
$(p).css('display', 'none');
$('.blue').css('display', 'block').addClass('show');
}})(this), 1000);
});
Пример здесь: http://jsfiddle.net/y7cX2/ Спасибо.
вместо css('display','block')
вы должны написать fadeIn(1000)
.
Проверьте решение сейчас:
Попробуй это:
$('.red').click(function(){
$(this).animate({opacity: 0}, 'slow', function(){
$(this).hide();
$('.blue').animate({opacity: 1}, 'slow', function(){
$(this).show();
});
});
});
$('.blue').show(500);