J'ai quelques divs placés les uns sous les autres et j'utilise la visibilité css pour les faire apparaître et disparaître. La raison pour laquelle j'utilise la visibilité est que les div ne bougent pas.
Pour le fondu d'entrée, j'utilise:
$('.drop1').css({opacity: 0.0, visibility: "visible"}).animate({opacity: 1.0});
et pour fade out j'utilise:
$('.drop1').css({opacity: 0.0, visibility: "hidden"}).animate({opacity: 1.0})}, 200);
Le FadeIn fonctionne, mais le fadeOut ne fonctionne pas.
Maintenant, vous pouvez penser que le problème est le dernier ', 2' mais je devrai l'utiliser comme un retard depuis le fondu/visibilité: caché est sur l'événement mouseleave après 200ms.
Ma question est donc: comment puis-je faire la visibilité cachée avec l'animation pour agir comme un fadeOut.
Merci beaucoup
$('.drop1').css({opacity: 1.0, visibility: "visible"}).animate({opacity: 0}, 200);
pourquoi le rendre si difficile, au lieu d'animer le css, vous pouvez utiliser la fonctionnalité de fondu par défaut
$('.drop1').fadeIn(200);
$('.drop1').fadeOut(200);
modifier
si vous voulez cependant le faire disparaître sans perdre la hauteur. vous pouvez utiliser fadeTo (durée, opacité, [rappel]);
$('.drop1').fadeTo(200, 0);
vérifiez cet exemple: http://jsfiddle.net/ufLwy/1/
J'avais des problèmes similaires, et voici ce que j'ai fini par faire.
$.fadeToHidden = function ( selector, duration, complete ) {
$.when(
$( selector ).fadeTo( duration, 0 )
).done( function(){
$( selector ).css('visibility', 'hidden')
complete();
});
}
La raison pour laquelle je l'ai fait est que
MODIFIER Alternativement, vous pouvez appliquer la "visibilité: cachée" à chaque élément individuel une fois que leur animation respective est terminée. Cela peut être un peu plus rapide pour sélectionner des groupes d'éléments plus importants, car vous ne recherchez qu'une seule fois le DOM pour le groupe d'éléments.
$.fadeToHidden = function ( selector, duration, complete ) {
$.when(
$( selector ).fadeTo( duration, 0 , function(){
$(this).css('visibility', 'hidden');
} )
).done( complete );
}
J'ai eu un problème similaire et je l'ai résolu de cette façon:
Pour fondre:
$("#id").css({visibility:"visible", opacity: 0.0}).animate({opacity: 1.0},200);
Pour disparaître:
$("#id").animate({opacity: 0.0}, 200, function(){
$("#"+txtid).css("visibility","hidden");
});
Comme vous pouvez le voir, je cache le div "#id" une fois l'animation terminée. J'espère qu'il n'est pas trop tard
Je sais que c'est un ancien poste mais je suis tombé sur une situation similaire et c'est ce que j'ai fini par faire
$(".drop1").css("visibility", "visible").show().fadeOut(5000);