Pourquoi jQuery .css('left') et .position().gauche renvoyer des valeurs différentes?
Les valeurs que je reçois pour $(el).css('left')
et $(el).position().left
sont différentes?
Si je vais $(el).css('left', '100px')
, puis $(el).css('left')
il retourne 110px
au lieu de 100px
(oui, c'est toujours 10% de plus) et si je évaluer $(el).position().left
, il me donne 100
.
Pourquoi Chrome se comporter de cette façon? Vous pouvez voir comment cela pourrait affecter les animations jQuery en utilisant le left
propriété.
Je suis en utilisant google Chrome 21.0.1180.57 sur Ubuntu.
EDIT 1: Semble être seulement une incidence sur Chrome, FF 14.0.1 est de me donner les mêmes valeurs.
OriginalL'auteur Gaurav Dadhania | 2012-08-08
Vous devez vous connecter pour publier un commentaire.
La
left
renvoie la valeur calculée de la CSS à gauche de la propriété.position().left
retourne l'abscisse par rapport à l'élément du premier décalage parent.Ces valeurs peut être égal et ils peuvent être pas égal .
position().left
peuvent également être facilement différents entre les navigateurs en raison des différences de rendu alors que.css("left")
ne peuvent différer que dans les unités de donnée, si c'..css("left")
ne le fait pas! i.imgur.com/auymh.png Sur chrome,.position().left
est de me donner le CSSleft
la valeur de la propriété.pouvez-vous me montrer un jsfiddle de qui? Dans la capture d'écran, ils ont des valeurs différentes. On est 1145 autres est de 1040.
Hmm, j'ai essayé de le recréer, mais le balisage/style est trop compliqué. Cependant, finalement, la modification de la
position
dediv.jspDrag
derelative
àabsolute
fixe! Maintenant, je reçois le réelleft
bien lorsque j'utilise.css("left")
. Savez-vous pourquoiposition: relative
était le coupable?lorsqu'en position absolue,
style.left
doit être égale àposition().left
parce que l'élément est hors de flux de documents et rien ne les affecte son positionnement, mais son décalage parent et.style.left
. Lorsque l'élément est affecté par le flux, il y a plus de choses que simplement.style.left
qui affectent sa position finale dans le document comme c'est indiqué dans mon jsfiddles.Oh oui, je le conçois, mais dans les deux cas
.css("left")
doit retourner le CSSleft
la valeur de la propriété. Comme vous pouvez le voir dans la capture d'écran, lorsque l'élément est en position relative,.css("left")
était en train de revenir à quelque chose de différent. Basé sur votre JSFiddles,.position().left
devrait être affecté,.css("left")
doit toujours retourner la propriété CSS valeur.OriginalL'auteur Esailija
Essayez ce code :
OriginalL'auteur Gabriel Silveira