Odpowiedzi:
.offset() zwróci pozycję przesunięcia elementu jako prosty obiekt, np .:
var position = $(element).offset(); // position = { left: 42, top: 567 }
Możesz użyć tej wartości zwracanej, aby ustawić inne elementy w tym samym miejscu:
$(anotherElement).css(position)
offset()nie zwraca właściwej górnej współrzędnej. Zamiast tego zwraca około 300 pikseli więcej niż górna współrzędna elementu w dokumencie. Dlaczego??
Zauważ, że $(element).offset()informuje o pozycji elementu względem dokumentu . Działa to świetnie w większości przypadków, ale w przypadku position:fixedmożesz uzyskać nieoczekiwane rezultaty.
Jeśli twój dokument jest dłuższy niż rzutnia i przewinąłeś pionowo w kierunku dolnej części dokumentu, wówczas wartość position:fixedelementu będzie większa niż wartość oczekiwana o przewiniętą wartość.offset()
Jeśli szukasz wartości względem rzutni (okna), a nie dokumentu na pozycji: element stały, możesz odjąć wartość dokumentu scrollTop()od wartości elementu stałego offset().top. Przykład:$("#el").offset().top - $(document).scrollTop()
Jeśli position:fixednadrzędnym elementem odsuniętym jest dokument , parseInt($.css('top'))zamiast tego chcesz przeczytać .
$(document).scrollTop()