2010-03-05 11 views

risposta

99

Si può fare qualcosa di simile, questa è una versione completa di commutazione:

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

Per strettamente una dissolvenza:

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

* bonks Nick * Coloro ' 'show'' dovrebbe essere'' toggle'' – Powerlord

+0

@Powerlord - Woops hai ragione, stava testando la proiezione qui, doh –

2

Ho avuto un problema simile e fissata in questo modo.

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

proprietà coda dice che se coda l'animazione o semplicemente giocare subito

15

Direttamente animano i risultati di altezza con un movimento a scatti su alcune pagine web. Tuttavia, la combinazione di una transizione CSS con slideUp() di jQuery rende un atto di scomparsa.

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

slideFade($('#mySelector')); 

violino con il codice:
http://jsfiddle.net/00Lodcqf
bye

Questa è la soluzione che ho usato nel progetto dna.js dove è possibile visualizzare il codice (github.com/dnajs/dna.js) per vedere supporto aggiuntivo per la commutazione e callback.

+1

Bel codice, grazie! Funziona esattamente come slideUp() + fadeOut() –

+1

Grazie. La risposta accettata di Nick Craver non ha funzionato per me per la ragione menzionata nella risposta di CodeKoala. Tuttavia, preferisco il tuo codice perché ti consente di impostare tempi diversi per gli effetti di dissolvenza e opacità. (Ad esempio, mi piace l'aspetto quando si imposta la dissolvenza un po 'più veloce rispetto alla diapositiva.) Tuttavia, non sono sicuro della richiesta di regolarità. Sul mio computer, l'effetto prodotto dal tuo codice è scorrevole in IE ma non particolarmente in Chrome. – Atlas

10

La risposta accettata da "Nick Craver" è sicuramente la scelta giusta. L'unica cosa che aggiungo è che la sua risposta in realtà non "nasconde", il che significa che il DOM lo vede ancora come un elemento vitale da mostrare.

Questo può essere un problema se si dispone di margini o padding sull'elemento "slid" ... verranno comunque visualizzati. Così ho appena aggiunto un richiamo alla funzione animate() per nascondere realtà dopo l'animazione è completa:

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

'risposta corretta' –

1

Lanciare un altro affinamento in là sulla base di @CodeKoalas. Rappresenta margine verticale e riempimento ma non orizzontale.

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

E 'possibile farlo con i metodi slideUp e fadeOut se stessi in questo modo:

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