Zaimplementowałem zestaw elementów, które można przeciągnąć do niektórych kontenerów za pomocą jQuery. Potrzebuję animacji, która przenosi element do określonego kontenera bez interakcji użytkownika. Problem polega na tym, że elementy i pojemniki z kroplami są w całości różnych częściach DOM i są najczęściej pozycjonowane za pomocą pływaka.Uzyskaj względną pozycję między 2 elementami DOM za pomocą JavaScriptu
Potrzebuję tylko trochę kodu, aby uzyskać bezwzględną różnicę pozycji między dwoma pływającymi elementami DOM, najlepiej przy użyciu jQuery. Odkryłem tylko, że niektóre hacki parsują w górę DOM, ale zawsze są bardzo specyficzne dla przeglądarki (np. "To nie działa dobrze z Firefoksem lub IE lub czymkolwiek").
Najlepiej byłoby coś takiego:
var distance = getDistance(element1, element2);
lub w notacji jQuery:
var distance = $(element1).distanceTo($(element2));
To nie zadziała, ponieważ .offset() zwraca tylko względną pozycję do elementu nadrzędnego. Ponieważ elementy macierzyste nie są takie same, wartości nie mogą być używane. Przekątna część odległości nie jest ważna btw, oczekiwałem lewej i najwyższych wartości ;-) – davil
Cóż, nie zgadzam się z tobą. Zgodnie z odniesieniem do jQuery (http://docs.jquery.com/CSS) offset otrzymuje "bieżące przesunięcie pierwszego dopasowanego elementu względem rzutni". rzutnia jest słowem kluczowym, nie jest offsetParent –
Przykład na stronie z przesunięciem jest dość mylący. Przykłady są ładowane w elementach iframe, co sprawia, że wygląda tak, jakby pozycja była tylko względna względem elementu nadrzędnego, podczas gdy w rzeczywistości jest względna w stosunku do dokumentu (w tym przypadku elementu iframe). – nickf