74 votes

jQuery fadeOut sans display aucun?

Existe-t-il une alternative à fadeOut () qui n'utilise pas display: none pour le style? Je voudrais simplement utiliser la visibilité cachée pour éviter tout changement dans la mise en page?

115voto

Nick Craver Points 313913

Vous pouvez utiliser .animate() sur le opacity directement:

 $(".selector").animate({ opacity: 0 })
 

De cette façon , l'élément occupe toujours l' espace comme vous voulez, il a juste un 0 d' opacité, de sorte qu'il est effectivement le même que celui qu'il soit visibility: hidden quand il se termine.

67voto

user113716 Points 143363

Oui, il y a une alternative. C'est ce qu'on appelle .fadeTo() , où vous définissez l'opacité cible, qui dans votre cas sera 0 .

 $('element').fadeTo( 1000, 0 ); // fade to "0" with a 1000ms duration
 

Cela ne modifiera pas la propriété display à la fin.

2voto

friggle Points 355

Une façon de faire est de capturer le mode d’affichage, puis .fadeOut et, dans son intégralité, de masquer votre méthode préférée, puis de redéfinir l’affichage:

 var $element = $('#selector');

var display = $element.css('display');
$element.fadeOut(500, function() {
   $element.css('visibility', 'hidden'); 
   $element.css('display', display);
}
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X