2010-08-02 6 views
18

Je crée un site Web, et il permet aux utilisateurs de changer les options d'affichage. J'utilise jQuery pour lisser les animations pour le changement de police. Il fade toute la page et revient avec les nouvelles polices. L'animation de fondu est bonne, mais quand elle s'estompe de nouveau, il n'y a pas de fondu. Ça surgit, pas d'animation. Le problème jQuery est en http://xsznix.my3gb.com/options.php.jQuery opacité animation

Le code que j'ai à ce jour est le suivant:

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

Répondre

7

Pourquoi ne pas utiliser jQuery « s fonctions intégrées fadeIn et fadeOut?

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

Je suppose que je pouvais, mais je ne veux vraiment pas refaire à nouveau mes crochets ... parce que je suis juste que paresseux. – xsznix

+0

@xsznix, c'est beaucoup plus propre aussi. 'animate' est destiné aux animations ** personnalisées **. –

+0

Je suppose que vous avez raison, je vais le faire. – xsznix

44

jQuery prend des valeurs de .animate()0-1.

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

Je suis sûr que .animate() doit appeler .parseFloat() (ou quelque chose) sur les valeurs que vous êtes de passage, ce qui rendrait votre 0% dans 0 (ce qui est correct), mais votre 100% dans 100, qui serait Incorrect.

+7

@xsznix - FYI '.animate()' est "destiné" pour l'animation que vous voulez. Il n'y a pas de règle sur la coutume ou la non-coutume (quoi que cela signifie). Quand vous appelez '.fadeOut()' c'est * directement * en appelant '.animate()', donc vous n'en êtes qu'une étape abstraite. Utilisez ce que vous préférez, et ne soyez pas influencé par des gens qui inventent des règles arbitraires. : o) – user113716

+0

J'obtiens ça ... juste .animate() utilise autant d'octets supplémentaires. : P – xsznix

+0

.fadeIn()/fadeOut() est également "nettoyeur" et donc beaucoup plus facile à entretenir. – xsznix

5

Vous pouvez utiliser les fonctions ou quelque chose comme ceci:

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