Penso che il motivo per cui non funziona ha qualcosa a che fare con il fatto che si ha il set right
posizione, ma non il left
.
Se si imposta manualmente la left
alla posizione corrente, sembra andare:
esempio dal vivo: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:
appare come sebbene Firefox si comporti come previsto perché è calcolato la posizione left
è disponibile come valore corretto in pixel, mentre i browser basati su Webkit, e apparentemente IE, restituiscono un valore di auto
per la posizione sinistra.
Poiché auto
non è una posizione di partenza per un'animazione, l'animazione viene eseguita in modo efficace da 0 a 0. Non molto interessante da guardare. : o)
Impostazione manuale della posizione sinistra prima che l'animazione come sopra risolva il problema.
Se non ti piace ingombrare il paesaggio con le variabili, ecco una bella versione della stessa cosa che evita la necessità di una variabile:
$("#coolDiv").css('left', function(){ return $(this).offset().left; })
.animate({"left":"0px"}, "slow");
Nella mia lettura della fonte jQuery http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js, per la determinazione della posizione jQuery normalizza già una posizione di elementi su "top" e " lasciato "relativo" sotto il cofano "- Credo che la tua risposta non sia corretta. Ad esempio, il mio esempio funziona nonostante il valore css sia impostato a destra e il valore animato sia impostato a sinistra. – artlung
@artlung - Grazie per il link, ma in quale browser hai testato? Sto testando su Safari e l'animazione non funziona senza impostare la posizione a sinistra. Salta direttamente a sinistra, presumibilmente a causa del valore iniziale di left "auto". – user113716
Testato su Firefox e funzionato alla grande. Peculiar, Chrome e Safari si comportano come hai indicato. Quindi sta facendo il/change/alla posizione corretta, ma non mostra l'interim fx! L'aggiunta di jQueryUI (che presumibilmente consente l'animazione di cose aggiuntive normali che jQuery non può) non modifica per Chrome e Safari. – artlung