Obtenir la position de l'élément par javascript
J'ai vu une douzaine de script qui peut attraper la position x et y d'un élément/objet dans la page. Mais je suis toujours avoir des problèmes avec la capture de x et y lorsque la page web est à l'aide de marges à l'organisme, ou d'autres éléments, absolu/relatif des éléments, tels que.
Est-il une solution qui donne la position exacte, peu importe ce que les marges ou les rembourrages sont utilisés.
🙂
source d'informationauteur Johnny
Vous devez vous connecter pour publier un commentaire.
Je utiliser le code suivant pour déplacer div boîte de suivre le curseur dans ce Web IME site
Sa retourner un tableau [à gauche,en haut],
Obtenir la position exacte est simplement une question de l'ajout de la offsetLefts et offsetTops de manière récursive pour le offsetParents:
Btw, cette solution serait probablement courir deux fois plus vite que l'autre solution ci-dessuscar nous n'en boucle une fois.
offsetParent
et d'autres décalage fonctions sont vieux... utiliser legetBoundingClientRect
fonction... d'utiliser ce:
maintenant, vous pouvez l'utiliser comme ceci
Ne vous inquiétez pas... n'importe comment beaucoup de marge ou de la position ou du remplissage de l'élément a, il fonctionne toujours
VOUS code est carrément mauvais, et j'ai quelques améliorations sur Pacerier de donner, donc je vais poster ma propre réponse:
S'il est juste utilisé comme
getPos(myElem)
sera de retour de la position globale. Si un deuxième élément est inclus comme un argument (c'est à diregetPos(myElem, someAncestor)
) qui est l'ancêtre des parents/de la première (au moins quelque part jusqu'à la chaîne), alors il sera de donner la position par rapport à cet ancêtre. Sirel
n'est pas donné (c'est à dire à gaucheundefined
), puis il utilise à dessein!=
au lieu de!==
parce qu'il devrait s'arrêter quandel
arrive ànull
etrel
estundefined
ainsi, de sorte que la non-égalité stricte qui est intentionnel, ne pas le modifier. Il renvoie également à un objet, car c'est un peu plus lisible dans l'utilisation d'un tableau (et donc vous pouvez faire quelque chose commegetPos().x
).C'est dérivée à partir de Pacerier de la solution, donc si vous êtes va upvote ce problème, pensez à upvoting son trop.