Ответ 1
$('.drop1').css({opacity: 1.0, visibility: "visible"}).animate({opacity: 0}, 200);
У меня есть несколько div, расположенных под друг другом, и я использую видимость css, чтобы угаснуть их. Причина, по которой я использую видимость, заключается в том, что div не перемещается.
Для fade In Я использую:
$('.drop1').css({opacity: 0.0, visibility: "visible"}).animate({opacity: 1.0});
и для fade Out я использую:
$('.drop1').css({opacity: 0.0, visibility: "hidden"}).animate({opacity: 1.0})}, 200);
FadeIn работает, но fadeOut не работает.
Теперь вы можете подумать, что проблема в последнем ", 200", но мне нужно будет использовать это как задержку с момента затухания/видимости: hidden находится на событии mouseleave после 200 мс.
Итак, мой вопрос: как я могу сделать видимость скрытой с анимацией, чтобы действовать как fadeOut.
Спасибо большое
$('.drop1').css({opacity: 1.0, visibility: "visible"}).animate({opacity: 0}, 200);
зачем делать это так сложно, вместо анимации css вы можете использовать функциональность по умолчанию fade
$('.drop1').fadeIn(200);
$('.drop1').fadeOut(200);
изменить
если вы, однако, хотите исчезнуть, не теряя высоты. вы можете использовать fadeTo (продолжительность, непрозрачность, [обратный вызов]);
$('.drop1').fadeTo(200, 0);
проверьте этот пример: http://jsfiddle.net/ufLwy/1/
У меня были похожие проблемы, и вот что я в итоге сделал.
$.fadeToHidden = function ( selector, duration, complete ) {
$.when(
$( selector ).fadeTo( duration, 0 )
).done( function(){
$( selector ).css('visibility', 'hidden')
complete();
});
}
Я сделал это потому, что
ИЗМЕНИТЬ В качестве альтернативы вы можете применить к "видимость: скрытый" для каждого отдельного элемента после завершения их соответствующей анимации. Это может быть немного быстрее для выбора больших групп элементов, поскольку вы только один раз запрашиваете DOM для группы элементов.
$.fadeToHidden = function ( selector, duration, complete ) {
$.when(
$( selector ).fadeTo( duration, 0 , function(){
$(this).css('visibility', 'hidden');
} )
).done( complete );
}
У меня была аналогичная проблема, и я решил ее так:
Затухать в:
$("#id").css({visibility:"visible", opacity: 0.0}).animate({opacity: 1.0},200);
Чтобы исчезнуть:
$("#id").animate({opacity: 0.0}, 200, function(){
$("#"+txtid).css("visibility","hidden");
});
Как вы можете видеть, я скрою div "#id" после окончания анимации. Я надеюсь, что это не слишком поздно.
Я знаю, что это старый пост, но я столкнулся с подобной ситуацией, и это то, что я закончил делать
$(".drop1").css("visibility", "visible").show().fadeOut(5000);
.drop1{ opacity: 0.0; }
$('.drop1').fadeTo( "slow" , 1.0);