2010-08-02 22 views
18

Sto creando un sito Web e consente agli utenti di modificare le opzioni di visualizzazione. Io uso jQuery per smussare le animazioni per cambiare i caratteri. Sbiadisce l'intera pagina e torna di nuovo con i nuovi caratteri.jQuery animazione opacità

L'animazione di dissolvenza va bene, ma quando si riapre, non c'è nessuna dissolvenza. Si apre solo, senza animazione.

Il problema è jQuery in http://xsznix.my3gb.com/options.php.

Il codice che ho finora è questo:

$('#font-classic').click(function(){ 
    $(document.body).animate({opacity: '0%'},{duration: 1000, complete: function(){ 
     // font changing code here 
     $(document.body).animate({opacity: '100%'}, 1000); 
    }}); 
}); 

risposta

7

perché non utilizzare jQuery 's funzioni built-in e fadeInfadeOut?

$('#font-classic').click(function(){ 
    $('body').fadeOut('normal', function(){ 
     $('body').fadeIn(); 
    }}); 
}); 
+0

Credo che avrei potuto, ma io davvero non voglio rifare le mie staffe di nuovo ... perché io sono solo che pigro. – xsznix

+0

@xsznix, è anche molto più pulito. 'animate' è pensato per ** animazioni ** personalizzate. –

+0

Immagino che tu abbia ragione, lo farò. – xsznix

44

jQuery di .animate() assume valori 0-1.

$(document.body).animate({opacity: 0}, 1000); 
$(document.body).animate({opacity: 1}, 1000); 

Sono sicuro che .animate() deve chiamare .parseFloat() (o qualcosa) sui valori che stai passando, il che renderebbe il vostro 0% in 0 (che è corretto), ma il vostro 100% in 100, che sarebbe errato.

+7

@xsznix - FYI '.animate()' è "significato" per qualsiasi animazione tu voglia. Non c'è alcuna regola su custom vs non custom (qualunque cosa significhi). Quando chiami '.fadeOut()' è * direttamente * chiamando '.animate()', quindi sei solo un passo astratto da esso. Usa quello che preferisci e non essere influenzato da persone che compongono regole arbitrarie. : o) – user113716

+0

Ho capito che ... .animato() usa molti byte extra. : P – xsznix

+0

.fadeIn()/fadeOut() è anche "più pulito" e quindi molto più semplice da mantenere. – xsznix

5

È possibile utilizzare funzioni o qualcosa di simile:

$(document.body).animate({ opacity: 1/2 }, 1000);