2010-03-05 8 views

Répondre

99

Vous pouvez faire quelque chose comme ça, c'est une version complète à bascule:

$("#mySelector").animate({ height: 'toggle', opacity: 'toggle' }, 'slow'); 

strictement un fadeout:

$("#mySelector").animate({ height: 0, opacity: 0 }, 'slow'); 
+2

* Bonks Nick * Les ' 'show'' devrait être'' toggle'' – Powerlord

+0

@Powerlord - Woops vous avez raison, testait la présentation ici, 0h –

2

J'ai eu un problème similaire et fixe comme celui-ci.

$('#mydiv').animate({ 
      height: 0, 
     }, { 
      duration: 1000, 
      complete: function(){$('#mydiv').css('display', 'none');} 
     }); 
$('#mydiv').animate({ 
      opacity: 0, 
     }, { 
      duration: 1000, 
      queue: false 
     }); 

la propriété de file d'attente, il indique si la file d'attente à l'animation ou tout simplement jouer tout de suite

15

résultats en hauteur directement animant un mouvement saccadé sur certaines pages Web. Cependant, la combinaison d'une transition CSS avec slideUp() de jQuery permet une disparition progressive.

function slideFade(elem) { 
    var fade = { opacity: 0, transition: 'opacity 0.5s' }; 
    elem.css(fade).slideUp(); 
    } 

slideFade($('#mySelector')); 

Fiddle avec le code:
http://jsfiddle.net/00Lodcqf
bye

Ceci est la solution que j'utilisé dans le projet de dna.js où vous pouvez voir le code (github.com/dnajs/dna.js) pour voir un soutien supplémentaire pour et basculement rappels.

+1

Nice code, merci! Cela fonctionne exactement comme slideUp() + fadeOut() –

+1

Merci. La réponse acceptée de Nick Craver n'a pas fonctionné pour moi pour la raison mentionnée dans la réponse de CodeKoalas. Cependant, je préfère votre code car il vous permet de définir des timings différents pour les effets de fondu et d'opacité. (Par exemple, j'aime le look lorsque vous définissez fondu un peu plus vite que le slideup.) Cependant, je ne suis pas sûr de votre demande de douceur. Sur mon ordinateur, l'effet produit par votre code est fluide dans IE mais pas particulièrement dans Chrome. – Atlas

10

La réponse acceptée par "Nick Craver" est certainement la voie à suivre. La seule chose que j'ajouterais, c'est que sa réponse ne le «cache» pas, ce qui signifie que le DOM le considère toujours comme un élément viable à afficher.

Cela peut être un problème si vous avez des marges ou des remplissages sur l'élément 'slid' ... ils seront toujours affichés. Donc, je viens d'ajouter un rappel à la fonction Animate() pour cacher réellement après l'animation est terminée:

$("#mySelector").animate({ 
    height: 0, 
    opacity: 0, 
    margin: 0, 
    padding: 0 
}, 'slow', function(){ 
    $(this).hide(); 
}); 
+0

'réponse correcte' –

1

Lancer un raffinement plus là sur la base @CodeKoalas. Il prend en compte la marge verticale et le remplissage mais pas l'horizontale.

$('.selector').animate({ 
    opacity: 0, 
    height: 0, 
    marginTop: 0, 
    marginBottom: 0, 
    paddingTop: 0, 
    paddingBottom: 0 
}, 'slow', function() { 
    $(this).hide(); 
}); 
0

Il est possible de le faire avec les méthodes et slideUpfadeOut eux-mêmes comme ceci:

$('#mydiv').slideUp(300, function(){ 
    console.log('Done!'); 
}).fadeOut({ 
    duration: 300, 
    queue: false 
});