Je pense que la raison pour laquelle cela ne fonctionne pas a quelque chose à voir avec le fait que vous avez l' right
de la position, mais pas de l' left
.
Si vous réglez manuellement l' left
à la situation actuelle, il semble aller:
Live exemple: 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:
Semble que Firefox se comporte comme prévu en raison de ses calculé left
poste est disponible à la valeur correcte en pixels, alors que les navigateurs basés sur Webkit, et apparemment, c'est à dire, de retour d'une valeur de auto
pour la position de gauche.
Parce qu' auto
n'est pas une position de départ pour une animation, l'animation s'exécute efficacement de 0 à 0. Pas très intéressant à regarder. :o)
Réglage de la position de gauche manuellement avant de l'animer comme ci-dessus résout le problème.
Si vous n'aimez pas encombrer le paysage avec des variables, voici une belle version de la même chose qui élimine la nécessité pour une variable:
$("#coolDiv").css('left', function(){ return $(this).offset().left; })
.animate({"left":"0px"}, "slow");