2010-08-24 4 views
3

Salutations,Comment puis-je animer le sens opposé?

Je modifie la largeur d'un élément qui sert de barre, et cela fonctionne. Cependant, je ne peux pas faire en sorte qu'il l'anime dans la direction opposée. J'ai essayé de mettre - en face de bar_width mais en vain. Largeur sera calculée dynamiquement c'est juste que je veux la direction d'aller vers la gauche plutôt que vers la droite comme si < ------- pas ----------->

var bar_width=$(this).css('width') ; 
$(this).css('width', '0').animate({ width: bar_width }, queue:false,duration:3500,easing: easing}); 

Répondre

5

Vous pouvez l'animer de droite à gauche en animant aussi bien la margin-left et width de l'élément en même temps:

CSS

#bar { 
    margin-left: 100px; 
    height: 10px; 
    width: 0; 
    background: red; 
} 

jQuery

$('#bar').animate({ 
    marginLeft: 0, 
    width: 100 
}); 

In action here. En alternative, si votre élément est positionné de manière absolue, vous pouvez animer la propriété left et widthat the same time.

+0

Merci d'avoir fourni le lien. Je ne sais toujours pas comment changer la marge force la largeur à aller dans la direction opposée. – Marin

+0

Il ne le fait pas mais il le fait ressembler :) En html/css la valeur par défaut est de croître en largeur de gauche à droite (cela peut être différent si vous changez votre direction de lecture, mais je n'ai jamais expérimenté). Quoi qu'il en soit, en changeant la marge ce qui se passe est que l'élément continue à croître de gauche à droite, mais en même temps il se déplace également à gauche. Cela donne l'impression de se développer de droite à gauche. – Pat

+0

Salut Pat, merci beaucoup pour votre code. Le problème est que la largeur est dynamique et l'astuce est basée sur la connaissance préalable de la largeur. Cela fonctionne parfaitement si vous le réglez à la largeur 100, mais ma largeur va changer. Je verrai s'il y a une solution de contournement et je l'afficherai en cas de succès. – Marin

0

au lieu de 0 vous pouvez utiliser "toggle" comme paramètre, comme ceci:

$(this).animate({ width: "toggle" }, queue:false, duration:3500, easing:easing}); 

"toggle" va animer à partir de son plein largeur 0, et l'inverse la prochaine fois.

+0

Salut merci pour votre temps. Le problème est que "toggle" va à droite puis revient à gauche. Fondamentalement, je veux qu'il aille tout de suite à gauche. – Marin

+0

@Marin - Si vous voulez que la direction de gauche soit instantanée vous pouvez donner à cet appel une 'durée: 0', c'est ce que vous recherchez? –

+0

Pas tout à fait instantané mais quelque part proche de la solution de Pat. – Marin