To jest prawdopodobnie bardzo proste pytanie, ale jak mam się zabrać do uzyskania właściwego przesunięcia elementu w jQuery?
Mogę zrobić:
$("#whatever").offset().left;
i to jest ważne.
Ale wydaje się, że:
$("#whatever").offset().right
jest niezdefiniowana.
Jak więc można to osiągnąć w jQuery?
Dzięki!!
$whatever[0].getBoundingClientRect().right
. jest to odniesione do lewej krawędzi okna.var $whatever = $('#whatever'); var ending_right = ($(window).width() - ($whatever.offset().left + $whatever.outerWidth()));
Odniesienie: .outerWidth ()
źródło
var rt = ($(window).width() - ($whatever.offset().left + $whatever.outerWidth()));
Może źle rozumiem twoje pytanie, ale przesunięcie ma dać ci dwie zmienne: poziomą i pionową. To określa położenie elementu. Więc to, czego szukasz, to:
$("#whatever").offset().left
i
$("#whatever").offset().top
Jeśli chcesz wiedzieć, gdzie znajduje się właściwa granica Twojego elementu, użyj:
$("#whatever").offset().left + $("#whatever").outerWidth()
źródło
To tylko dodatek do tego, co powiedział Greg:
Ten kod otrzyma właściwą pozycję względem lewej strony. Jeśli intencją było uzyskanie pozycji po prawej stronie względem prawej (jak przy użyciu
right
właściwości CSS ), konieczne jest dodanie do kodu w następujący sposób:Ten kod jest przydatny w animacjach, w których musisz ustawić prawą stronę jako stałą kotwicę, gdy nie możesz początkowo ustawić
right
właściwości w CSS.źródło
W rzeczywistości działają one tylko wtedy, gdy okno nie jest w ogóle przewijane z lewej górnej pozycji.
Musisz odjąć wartości przewijania okna, aby uzyskać przesunięcie przydatne do zmiany pozycji elementów, aby pozostały na stronie:
var offset = $('#whatever').offset(); offset.right = ($(window).width() + $(window).scrollLeft()) - (offset.left + $('#whatever').outerWidth(true)); offset.bottom = ($(window).height() + $(window).scrollTop()) - (offset.top + $('#whatever').outerHeight(true));
źródło
Istnieje natywny interfejs API DOM, który zapewnia to po wyjęciu z pudełka -
getBoundingClientRect
:document.querySelector("#whatever").getBoundingClientRect().right
źródło
Brendon Crawford udzielił tutaj najlepszej odpowiedzi (w komentarzu), więc przeniosę ją do odpowiedzi, dopóki nie (i może trochę rozszerzę).
var offset = $('#whatever').offset(); offset.right = $(window).width() - (offset.left + $('#whatever').outerWidth(true)); offset.bottom = $(window).height() - (offset.top + $('#whatever').outerHeight(true));
źródło
Zdobycie punktu zakotwiczenia
div/table (left) = $("#whatever").offset().left;
- ok!Aby uzyskać punkt zakotwiczenia
div/table (right)
, możesz użyć poniższego kodu.$("#whatever").width();
źródło