web-dev-qa-db-fra.com

Pourquoi jQuery .css ('left') et .position (). Left retournent des valeurs différentes?

Les valeurs que j'obtiens pour $(el).css('left') et $(el).position().left sont différentes?

Si je vais $(el).css('left', '100px'), puis $(el).css('left') elle renvoie 110px Au lieu de 100px (Oui, c'est toujours 10% de plus) et si j'évalue $(el).position().left, cela me donne 100.

Pourquoi Chrome se comporte-t-il de cette façon? Vous pouvez voir comment cela affecterait les animations jQuery en utilisant la propriété left.

J'utilise Chrome 21.0.1180.57 sur Ubuntu.

EDIT 1: Semble n'affecter que Chrome, FF 14.0.1 me donne les mêmes valeurs.

14
Gaurav Dadhania

left renvoie la valeur calculée de la propriété CSS left.

position().left renvoie la coordonnée x par rapport au premier parent de décalage de l'élément.

Ces valeurs peuvent être égales et elles peuvent être non égales .

position().left peut aussi facilement être différent entre les navigateurs à cause d'un rendu différent alors que .css("left") ne peut différer que dans les unités données, si c'est le cas.

19
Esailija

Essayez ce code:

$("#div")[0].style.left
3
Gabriel Silveira