J'ai implémenté un ensemble d'éléments déplaçables qui peuvent être déposés dans certains conteneurs en utilisant jQuery. Ce dont j'ai besoin, c'est d'une animation qui déplace un élément vers un conteneur spécifique sans interaction de l'utilisateur. Le problème est que les éléments et les conteneurs de dépôt sont complètement dans différentes parties du DOM et la plupart du temps positionnés en utilisant float. Tout ce dont j'ai besoin, c'est d'un code pour obtenir la différence de position absolue entre 2 éléments DOM flottants, de préférence en utilisant jQuery. La seule chose que j'ai trouvée étaient des hacks analysant le DOM mais toujours très spécifique au navigateur (par exemple, "cela ne fonctionne pas bien avec Firefox ou IE ou autre").Obtenir la position relative entre 2 éléments DOM en utilisant JavaScript
Le mieux serait quelque chose comme ceci:
var distance = getDistance(element1, element2);
ou en notation jQuery:
var distance = $(element1).distanceTo($(element2));
Cela ne fonctionnera pas car .offset() renvoie uniquement la position relative à l'élément parent. Comme les éléments parents ne sont pas identiques, les valeurs ne peuvent pas être utilisées. La partie de distance diagonale n'est pas importante btw, je m'attendais à des valeurs de gauche et de haut ;-) – davil
Eh bien, je ne serai pas d'accord avec vous. Selon la référence jQuery (http://docs.jquery.com/CSS), offset obtient "le décalage actuel du premier élément correspondant par rapport à la fenêtre d'affichage." viewport est le mot clé, ce n'est pas le offsetParent –
L'exemple sur la page offset est assez trompeur. Les exemples sont chargés dans iframes ce qui donne l'impression que la position est relative au parent, alors qu'en fait c'est le document (dans ce cas, iframe) – nickf