Je pense que la raison pour laquelle il ne fonctionne pas a quelque chose à voir avec le fait que vous avez l'ensemble de position right
, mais pas le left
.
Si vous définissez manuellement la left
à la position actuelle, il semble aller:
Un exemple concret:http://jsfiddle.net/XqqtN/
var left = $('#coolDiv').offset().left; // Get the calculated left position
$("#coolDiv").css({left:left}) // Set the left to its calculated position
.animate({"left":"0px"}, "slow");
EDIT:
Apparaît comme bien que Firefox se comporte comme prévu parce que son calcul La position left
ed est disponible en tant que valeur correcte en pixels, alors que les navigateurs basés sur Webkit, et apparemment IE, renvoient une valeur de auto
pour la position gauche.
Parce que auto
n'est pas une position de départ pour une animation, l'animation fonctionne effectivement de 0 à 0. Pas très intéressant à regarder. : o)
La définition de la position gauche manuellement avant l'animation comme ci-dessus résout le problème.
Si vous ne l'aimez pas encombrer le paysage avec des variables, voici une belle version de la même chose que évite la nécessité d'une variable:
$("#coolDiv").css('left', function(){ return $(this).offset().left; })
.animate({"left":"0px"}, "slow");
Dans ma lecture de la source jQuery http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js, pour la détermination de la position jQuery normalise déjà la position d'un élément à "top" et " "parent" gauche sous le capot "- Je crois que votre réponse est incorrecte. Par exemple, mon exemple fonctionne malgré la valeur css définie pour right et la valeur animée définie sur left. – artlung
@artlung - Merci pour le lien, mais dans quel navigateur avez-vous testé? Je suis en train de tester dans Safari, et l'animation ne fonctionne pas sans régler la position de gauche. Il saute directement à gauche, vraisemblablement en raison de la valeur initiale de '' auto'. – user113716
Testé dans Firefox et a bien fonctionné. Particulier, Chrome et Safari se comportent comme vous l'avez indiqué. Donc ça fait le/changer/à la position correcte, mais ça ne montre pas le fx intérimaire! L'ajout de jQueryUI (qui permet supposément d'animer des choses supplémentaires normales que jQuery ne peut pas faire) n'apporte aucun changement pour Chrome et Safari. – artlung